私はバッファオーバーフローに非常に慣れていないので、今はさまざまな種類のバッファオーバーフロー攻撃を実践しています。シェルコードは、NOPが埋め込まれるまで実行されませんでしたが、メモリ内で適切に設定され、実行フローは必要に応じて機能します。
調査後、私は次のことを書いた人を見かけました。
「add espのオペコードを見つけて、-1500はシェルコードの先頭にそれらのバイトを入れてnopsを削除します」
誰かがこれを説明するのを手伝っていただければ幸いです!
前もって感謝します
NOPはアンチウイルスによってフラグが付けられる傾向があるため、別の方法を使用して実行をシェルコードに「スライド」できます。あなたが言われた方法は、1500バイトをESPに追加することでした。これは(私は仮定していますが)1500 NOPを置き換え、シェルコードに到達するはずです。
まだこれを見たことがない場合は、すばらしいBO作成チュートリアルのためにcorelan.beを読む必要があります。 ここ はadd esp
を説明するものです
私は答えを見つけました:
'StackAdjustment' => -3500、#シェルコードの開始時にスタックポインタを変更して、それ自体に書き込むことなくスタックを使用できるようにします。
まず、免責事項:私はVMを起動して私の説明を確認するためにこれをウォークスルーする必要があります。Windowsエクスプロイトについては、それほど多くのことは行いません。その記事を見てください。現在のスタックフレームを破損しないようにスタックを調整しているとすぐに思います。SEHチェーンを上書きするために利用しているコードブロックが関数のプロローグを返すと、ESP EBPから復元されます。実行の再開を許可します。後で例外がスローされると、SEHの上書きによって制御されます。