gets() にバイナリデータを送信する

gets() にバイナリデータを送信する

(バッファオーバーフローの脆弱性がある)被害者プログラムがあります。このプログラムはgets()を使用して固定サイズのバッファに書き込みます。

シェルコードをSCファイルに入れたとしましょう。

$ ./victim < SC
Input your data: 
$

シェルコードが機能しないように見える理由は次のとおりです。 SCが被害者にリダイレクトされ、シェルコードが挿入されてシェルが生成されますが、生成されたシェルはstdinが閉じていることを発見し、すぐに終了します。

expect注入しようとしましたが、expect散乱後の殻が爆発します。

唯一の実用的な方法は、シェルコードをマウスの貼り付けバッファに入れて、キーボードを入力デバイスとして保持しながらシェルコードを挿入することです。しかし、貼り付けバッファにバイナリデータを入れる方法がわかりません。

この問題を解決する方法についてのアイデアはありますか?

ベストアンサー1

この問題(誰かが同じ状況で発生した)の解決策は次のとおりです。 https://stackoverflow.com/questions/8509045/execve-bin-sh-0-0-in-a-pipe

おすすめ記事