<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                異常處理程序覆蓋曾經是利用堆棧緩沖區溢出的一種非常流行的技術,但在新程序中不再那么常見,因為它們很可能是用SafeSEH編譯的。有一點,即使在啟用了SafeSEH的情況下,仍然有可能通過堆噴來濫用異常處理程序,但是當然,內存保護并不止于此。DEP/ASLR最終來拯救,所以幾乎結束了SEH漏洞的輝煌歲月。您可能仍然可以找到不利用SafeSEH編譯的易受攻擊的應用程序,但是該應用程序可能已經過時,不再維護,或者它更像是開發人員的學習實驗。哦,這可能已經是一個漏洞了。盡管如此,利用異常處理來利用堆棧緩沖區溢出還是有趣的,所以如果你遇到它,使用`Seh` mixin ### 要求 為了能夠使用SEH mixin,必須滿足一些可利用的需求: * 易受攻擊的程序沒有SafeSEH * 沒有DEP(數據執行保護)。mixin使用短暫的跳轉來執行有效載荷,這意味著內存必須是可執行的。正如名字所暗示的,DEP阻止了這一點。 ### 示例 首先,確保你在你的模塊的`Metasploit3`類的范圍內包含了 `Seh` mixin ~~~ include Msf::Exploit::Seh ~~~ 接下來,您需要`Ret`來為SE處理程序設置一個地址。這個地址應該放在你的模塊的元數據中,具體在下面的`Targets`。在Metasploit中,每個目標實際上是一個由兩個元素組成的數組。第一個元素只是目標的名稱(目前沒有嚴格的命名風格),第二個元素實際上是一個字典,其中包含特定于該目標的信息,例如目標地址。以下是設置Ret地址的示例: ~~~ 'Targets' => [ [ 'Windows XP', {'Ret' => 0x75022ac4 } ] # p/p/r in ws2help.dll ] ~~~ 正如你所看到的,記錄Ret地址的作用以及指向那個DLL 也是一個好習慣。 Ret實際上是一種特殊的key,因為它可以通過`target.ret`在模塊中使用。在我們的下一個例子中,你會看到`target.ret`被用來代替原始目標地址的編碼。 如果您需要一個工具來為ret地址 查找POP/POP/RET,你能使用metasploit的`msfbinscan`工具,它位于tools目錄下. 好的,現在我們來看看這些方法。`Seh` mixin 提供了兩種方法: * `generate_seh_payload` - 生成一個虛假的SEH記錄,并在之后附上有效載荷。這是一個例子: ~~~ buffer = '' buffer << "A" * 1024 # 1024 bytes of padding buffer << generate_seh_payload(target.ret) # SE record overwritten after 1024 bytes ~~~ buffer內存中的實際布局應該是這樣的: ~~~ [ 1024 bytes of 'A' ][ A short jump ][ target.ret ][ Payload ] ~~~ * `generate_seh_record` - 在沒有有效載荷的情況下生成假SEH記錄,以防您想將有效載荷放置在其他地方。代碼示例: ~~~ buffer = '' buffer << "A" * 1024 # 1024 bytes of padding buffer << generate_seh_payload(target.ret) buffer << "B" * 1024 # More padding ~~~ 內存布局應該是這樣的: ~~~ [ 1024 bytes of 'A' ][ A short jump ][ target.ret ][ Padding ] ~~~ ### 參考 https://www.corelan.be/index.php/2009/07/25/writing-buffer-overflow-exploits-a-quick-and-basic-tutorial-part-3-seh/ https://github.com/rapid7/metasploit-framework/blob/master/lib/rex/exploitation/seh.rb https://github.com/rapid7/metasploit-framework/blob/master/lib/msf/core/exploit/seh.rb
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看