ユーザーがリリースする前に、いくつかの新しいアプリケーションをテストするように指示され、フィールドの1つでバッファオーバーフローを見つけることができました。
ここで私はレンガの壁にぶつかりましたが、次に何を試すことができるかわかりませんでした。
最初に部分的なEIP上書きを試みましたが、そのスペース内に有用なジャンプが見つかりません(実際には何もありません)。
次に、アプリに含まれているDLLをチェックして、ASLRを完全に回避しましたが、どちらも使用できるジャンプはありません。
いくつかの一時的なテストのために、現在のジャンプアドレスをハードコーディングすることにし、後でASLRについて心配することにしました。ここでの問題は、私の現在のアドレス空間が61xxxxxxと76xxxxxxの間にあることです。これは通常は問題ではありませんが、オーバーフローの原因となるフィールドは自動的に各文字を大文字にするため、61〜7Aの範囲のすべてが除外されます。
明らかな何かが欠けていますか?そうでない場合は、次に何を試す必要がありますか?
デモのためだけに実際にそれを利用することで得られるものはそれほど多くありません。あなたはあなたの聴衆から借りた電話からあなたのシステムをクラッシュさせるデモをすることができるはずです、そしてそれはあなたの視聴者を十分に驚かせるはずです。
犬やポニーに吠えたり速歩させたりしたい場合は、モジュールのリベースを使用してデモをリグすることができます。これにより、アドレス空間を現在の61xxxxxxの場所以外の場所(素敵で便利な41xxxxxxなど)に移動できます。それは確かに不誠実ですが、劇的でもあります。罪悪感を感じたら、将来の機能拡張の一環として誰かがそのアドレスに新しいモジュールを追加した場合とほとんど変わらないことを伝えます。