バッファ サイズを増やすと、ASLR ブルート フォースが成功する可能性がどのように増加しますか?
これは、私が最近行ったプロジェクトに関連しています。バッファ/文字配列 (元のサイズは 517) を持ったエクスプロイト_1.c プログラムがありました。バッファーは memset で NOP に設定されました。次に、シェルコードとリターン アドレスをバッファーに配置し、それを badfile というファイルに書き込みました。プログラムは戻りアドレスである 1 つの引数を取ります。私たちは、bof と呼ばれる関数で、badfile の内容をサイズ 12 のバッファーにコピーする stack.c プログラムを用意しました。
NOPスレッドの最後にジャンプを配置し、シェルコードにリダイレクトさせる方法があることを読んだことがあります。ただし、シェルコードは 24 バイトで、リターン アドレスの前に最大で 16 バイトしかありませんでした。だから私がしたことは、シェルコードをバッファの最後に置くことです。
与えられた 3 番目のタスクは、バッファ サイズ 1000、10000、および 100000 でエクスプロイト プログラム (もちろんバッファ サイズ用に変更されています) が成功する平均確率が高くなるようにリターン アドレスを選択することです。 ASLRブルートフォースが何回試行されたかをカウントします。
だから私が考えていたのは、メモリが増えると明らかにNOPスレッドが長くなるということです。しかし、それ以上の何かがあるはずです。
私が選んだアドレスは: 0xbf87f030 0xbf82e3d0 0xbfe0fb60