私は現在、バッファオーバーフローを練習しています。そして、ファジングに関してあなたに質問があります。
いくつかのバッファサイズを試してアプリケーションをクラッシュさせるpythonスクリプトを開発できます。これは正常に機能し、アプリケーションがクラッシュしたバッファサイズを返します。
ただし、スクリプトから取得する値は、必ずしもサイズ"EIP書き換えが可能"ではありません。このバッファサイズを見つけるために、私は通常模索しなければなりません...
問題は、正確なバイト数を探すときに、次のことを余儀なくされることです。
そうでない場合、私は何度も何度もやり直します...
時間がかかりすぎる操作です。このステップを速くすることはできますか? EIPが上書きされない限り、アプリケーションを自動的に再起動するデバッガーの追加設定がありますか?または、スクリプトの特定の設定で?
私の場合、アプリケーション(クロスファイア)は最初に4377バイトでクラッシュします。ただし、EIPは上書きされません。
4378バイト、それは同じことです。
そして4379バイト、それは良いです! EIPは上書きされます!
しかし、4380(またはそれ以上)を試しても、EIPは上書きされません...そしてその理由がわかりません。
誤解しているかもしれませんが、通常は上書きしすぎても問題ありません。
したがって、一般的なアプローチは、必要以上に上書きしますが、特定のパターンを使用することです。 EIPで終わるものを見て、パターンでそれを検索すると、EIPで終わるデータの正確な位置がわかります。
悪用ツールには通常これがあります。たとえば [〜#〜] peda [〜#〜] にはpattern
機能があります。