私はFreeBSDシステムでバッファオーバーフローを実験していました。 最初の実験として、悪用されたプログラムが別のプロセス(この場合は/ bin/hostname)を起動するようにしました。すべてうまくいって、プログラムはホスト名を表示して終了しました。 その後、プログラムがシェルを起動するようにしようとしました(つまり、/ bin/shを実行しています)。私は、呼び出すプログラムを表す文字列を単に交換することによってこれができると仮定しました。これを試すと、悪用されたプログラムは単に終了します.gdbによれば、新しいプロセス(/ bin/sh)が正常に生成されます。ただし、シェルは生成されません。 私は最初の悪用を試み、/ bin/shファイルを/ bin/hostnameに移動しましたが、それでも何も変わりません。 私の質問は今、他のコマンドから/ bin/shを実行することでどのように違うのでしょうか?参考のためバッファオーバーフロー - シェルの起動後にプログラムが終了する
は、私は以下のシェルコードを使用するシェルの産卵試みのために:
char code[] = "\x31\xc0\x50\x68\x2f\x2f\x73\x68"
"\x68\x2f\x62\x69\x6e\x89\xe3\x50"
"\x54\x53\xb0\x3b\x50\xcd\x80";
これは関連するかもしれません:http://forums.freebsd.org/showthread.php?t=10054 – zxcdw
もっと情報が必要なようですので、あなたのコードをあなたのシェルコードソースを含めて投稿してください。 – rumpel