web-dev-qa-db-ja.com

バッファオーバーフロースタックの調整

私はバッファオーバーフローに非常に慣れていないので、今はさまざまな種類のバッファオーバーフロー攻撃を実践しています。シェルコードは、NOPが埋め込まれるまで実行されませんでしたが、メモリ内で適切に設定され、実行フローは必要に応じて機能します。

調査後、私は次のことを書いた人を見かけました。

「add espのオペコードを見つけて、-1500はシェルコードの先頭にそれらのバイトを入れてnopsを削除します」

誰かがこれを説明するのを手伝っていただければ幸いです!

前もって感謝します

6
Ahmed Taher

NOPはアンチウイルスによってフラグが付けられる傾向があるため、別の方法を使用して実行をシェルコードに「スライド」できます。あなたが言われた方法は、1500バイトをESPに追加することでした。これは(私は仮定していますが)1500 NOPを置き換え、シェルコードに到達するはずです。

まだこれを見たことがない場合は、すばらしいBO作成チュートリアルのためにcorelan.beを読む必要があります。 ここadd espを説明するものです

3
schroeder

私は答えを見つけました:

'StackAdjustment' => -3500、#シェルコードの開始時にスタックポインタを変更して、それ自体に書き込むことなくスタックを使用できるようにします。

1
Ahmed Taher

まず、免責事項:私はVMを起動して私の説明を確認するためにこれをウォークスルーする必要があります。Windowsエクスプロイトについては、それほど多くのことは行いません。その記事を見てください。現在のスタックフレームを破損しないようにスタックを調整しているとすぐに思います。SEHチェーンを上書きするために利用しているコードブロックが関数のプロローグを返すと、ESP EBPから復元されます。実行の再開を許可します。後で例外がスローされると、SEHの上書きによって制御されます。

0
David Hoelzer