7

ヒープスプレーに関する2つの記事、Wikiepdiaこのブログ投稿を読みました。シェルコードがプログラムのメモリにどのように導入されるかを理解しています。しかし、ヒープ上にあるアドレスメモリにジャンプ/コールするようにプログラムを作成するにはどうすればよいでしょうか。

どのようなクラッシュがヒープを呼び出しますか?

そのような攻撃は、一種のバッファオーバーフロー攻撃で実行する必要がありますか?

バッファオーバーフローのような黄金律はありますか?つまり、nバージョンの関数を(strncpy代わりにstrcpy)使用しますか?

4

1 に答える 1

3

私が正しく理解していれば、

これらは通常、ヒープスプレーが実行されるたびに、これらのヒープブロックがほぼ同じ場所にあるという事実を利用します。実行フローは、バッファオーバーフローまたはヒープオーバーフローの欠陥を介してヒープスプレーにリダイレクトされる可能性があります。

彼らはこのような状況について話している:

char buffer[10];
FuncPtr p;

また、読み込み時にbufferオーバーフロー保護はなく、のメモリ位置に直接書き込むことができますp。後でコードが呼び出そうとするとp、攻撃者がジャンプしたい場所、おそらく実行可能コードをアプリに挿入した場所にジャンプします。

簡単な修正:静的バッファーを使用せず(std::コレクションクラスを優先)、常にオーバーフローをチェックします。

于 2010-11-05T23:37:48.880 に答える