<listing id="lnlbz"></listing>

      <address id="lnlbz"></address>
      <form id="lnlbz"><th id="lnlbz"><listing id="lnlbz"></listing></th></form>

          <form id="lnlbz"></form>

          <progress id="lnlbz"><nobr id="lnlbz"></nobr></progress>

          <address id="lnlbz"><sub id="lnlbz"><menuitem id="lnlbz"></menuitem></sub></address><listing id="lnlbz"><font id="lnlbz"><cite id="lnlbz"></cite></font></listing><thead id="lnlbz"></thead><rp id="lnlbz"></rp>

          1. 移動端
            訪問手機端
            官微
            訪問官微

            搜索
            取消
            溫馨提示:
            敬愛的用戶,您的瀏覽器版本過低,會導致頁面瀏覽異常,建議您升級瀏覽器版本或更換其他瀏覽器打開。

            典型的基于堆棧的緩沖區溢出

            來源:看雪社區 2017-09-15 10:25:56 堆棧 緩沖區溢出 金融安全
                 來源:看雪社區     2017-09-15 10:25:56

            核心提示緩沖區溢出有兩種類型:1、基于堆棧的緩沖區溢出,這里的目標緩沖區位于堆棧中;2、基于堆的緩沖區溢出,這里的目標緩沖區位于堆中。

            典型的基于堆棧的緩沖區溢出

              虛擬機安裝:Ubuntu 12.04(x86)

              這個帖子是最簡單的漏洞開發教程系列,在互聯網上你可以找到很多關于它的文章。盡管它豐富和熟悉,我更喜歡自己寫博客文章,因為它將作為我未來許多職位的先決條件!

              什么是緩沖區溢出?

              將源緩沖區復制到目標緩沖區可能導致溢出

              1、源字符串長度大于目標字符串長度。

              2、不進行大小檢查。

              緩沖區溢出有兩種類型:

              1、基于堆棧的緩沖區溢出 - 這里的目標緩沖區位于堆棧中

              2、基于堆的緩沖區溢出 - 這里的目標緩沖區位于堆中

              在這篇文章中,我將只討論基于堆棧的緩沖區溢出。堆溢出將在Linux(x86)漏洞開發教程系列的 “3級”中討論!

              緩沖區溢出錯誤導致任意代碼執行!

              什么是任意代碼執行?

              任意代碼執行允許攻擊者執行他的代碼以獲得對受害機器的控制。受害機器的控制是通過多種方式實現的,例如產生根shell,添加新用戶,打開網口等...

              聽起來很有趣,足夠的定義讓我們看看緩沖區溢出攻擊的代碼!

              漏洞代碼

            典型的基于堆棧的緩沖區溢出

              編譯代碼

            典型的基于堆棧的緩沖區溢出

              上述漏洞代碼的[2]行顯示了緩沖區溢出錯誤。這個bug可能導致任意代碼執行,因為源緩沖區內容是用戶輸入的!

              如何執行任意代碼執行?

              使用稱為“ 返回地址覆蓋 ”的技術實現任意代碼執行。這種技術有助于攻擊者覆蓋位于堆棧中的“返回地址”,并且這種覆蓋將導致任意代碼執行。

              在研究漏洞代碼之前,為了更好的理解,讓我們反匯編并且繪制出漏洞代碼的堆棧布局。

              反匯編

            典型的基于堆棧的緩沖區溢出

              堆棧布局:

            典型的基于堆棧的緩沖區溢出

              因為我們已經知道用戶輸入的大于256,將溢出目標緩沖區并覆蓋堆棧中存儲的返回地址。通過發送一系列“A”來測試它。

              測試步驟1:是否可以覆蓋返回地址?

            典型的基于堆棧的緩沖區溢出

              以上輸出顯示指令指針寄存器(EIP)被“AAAA”覆蓋,這樣可以確定覆蓋返回地址是可能的!

              測試步驟2:目的緩沖區的偏移量是多少?

              這里讓我們找出返回地址相對與目的緩沖區'buf'的偏移量。在反匯編并繪制了main()的堆棧布局后,現在可以嘗試找到偏移位置信息! 堆棧布局顯示返回地址位于距目標緩沖區“buf”的偏移(0x10c)處。 0x10c計算如下:

            典型的基于堆棧的緩沖區溢出

              哪里

            典型的基于堆棧的緩沖區溢出

              因此,用戶輸入的 “A” * 268 + “B” * 4,覆蓋了’buf‘,對齊空間和調用者的ebp覆蓋為”A"并且返回地址變為"BBBB"

            典型的基于堆棧的緩沖區溢出

              以上輸出顯示攻擊者可以控制返回地址。 位于堆棧位置(0xbffff1fc)的返回地址被“BBBB”覆蓋。 有了這些信息,我們可以編寫一個漏洞利用程序來實現任意的代碼執行。

              攻擊代碼:

            典型的基于堆棧的緩沖區溢出

              執行上面的exploit程序,給了我們root shell,如下所示:

            典型的基于堆棧的緩沖區溢出

              注意:為了獲得這個root shell,我們關閉了許多漏洞利用緩解技術。 對于所有文章中的1級,我已經禁用了這些利用減輕技術,因為第1級的目標是向您介紹漏洞。 當我們進入Linux(x86)利用開發教程系列的“2級”時,真正的樂趣會發生在這里,我將在此討論繞過這些利用減輕技術!  

            1024你懂的国产日韩欧美_亚洲欧美色一区二区三区_久久五月丁香合缴情网_99爱之精品网站

            <listing id="lnlbz"></listing>

                <address id="lnlbz"></address>
                <form id="lnlbz"><th id="lnlbz"><listing id="lnlbz"></listing></th></form>

                    <form id="lnlbz"></form>

                    <progress id="lnlbz"><nobr id="lnlbz"></nobr></progress>

                    <address id="lnlbz"><sub id="lnlbz"><menuitem id="lnlbz"></menuitem></sub></address><listing id="lnlbz"><font id="lnlbz"><cite id="lnlbz"></cite></font></listing><thead id="lnlbz"></thead><rp id="lnlbz"></rp>

                      責任編輯:韓希宇

                      免責聲明:

                      中國電子銀行網發布的專欄、投稿以及征文相關文章,其文字、圖片、視頻均來源于作者投稿或轉載自相關作品方;如涉及未經許可使用作品的問題,請您優先聯系我們(聯系郵箱:cebnet@cfca.com.cn,電話:400-880-9888),我們會第一時間核實,謝謝配合。

                      為你推薦

                      猜你喜歡

                      收藏成功

                      確定