スタックの破損があります。 function system()は、おそらく139のエラーコードで終了しました。アプリケーションは、それが異なるプロセスであるため、それが気づきませんでした。
新しいプロセスのスタック準備-Bash / System()違いの違い
-
29-07-2022 - |
質問
スタックバッファーオーバーフローを説明するアプリケーションがあります。 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()呼び出しの場合に同じ効果(バッファオーバーフロー)を取得する方法はありますか?
解決
所属していません StackOverflow