質問

スタックバッファーオーバーフローを説明するアプリケーションがあります。 return-to-LIBC攻撃を引き起こしたいと思います。

バッファオーバーフローは以下に基づいています

int main(int argc, char **argv)
{
[...]
char buff[16];
strcpy(buff,argv[1]);
[...]
}

このアプリケーションをシェルから直接呼び出すと、予想されるエラーが発生します - スタックが破損しています:

[syssec@syssecvm bufov1]$ ./vulnapp hhgfhdsgfsagfzutuewzrqwgfshgafsd
Segmentation fault

しかし、他のアプリ(executor.C)で引数を準備しようとしていて、System()呼び出しを介してVulnAppを呼び出すと、何も起こりません。 vulnappは、あらゆるLenghtの議論を受け入れます。

./executor
You executed:./vulnapp 01234567890123450123BBBB�%�/bin/ged�������/
[syssec@syssecvm bufov1]$ 

この場合、スタックの破損はありません。

なぜこのようなのですか?

System()呼び出しの場合に同じ効果(バッファオーバーフロー)を取得する方法はありますか?

役に立ちましたか?

解決

スタックの破損があります。 function system()は、おそらく139のエラーコードで終了しました。アプリケーションは、それが異なるプロセスであるため、それが気づきませんでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top