#20145238荊玉茗《網絡對抗》-逆向及Bof進階實踐

20145238荊玉茗《網絡對抗》-逆向及Bof進階實踐

實踐目的:注入shellcode

準備一段shellcode代碼

Shellcode實際是一段代碼(也能夠是填充數據),是用來發送到服務器利用特定漏洞的代碼,通常能夠獲取權限。另外,Shellcode通常是做爲數據發送給受攻擊服務器的。 Shellcode是溢出程序和蠕蟲病毒的核心,提到它天然就會和漏洞聯想在一塊兒shell

Linux中兩種基本構造攻擊buf的方法:retaddr+nop+shellcode,nop+shellcode+retaddr,緩衝區小就就把shellcode放後邊,否則就放前邊。服務器

實驗步驟

1.寫一段shellcode代碼

2.設置環境

Bof攻擊防護技術網絡

  • 須要手動設置環境使注入的shellcode到堆棧上可執行。
  • 安裝execstack

    dom

  • 設置堆棧可執行,並查詢堆棧是否可執行,以便shellcode在堆棧上能夠執行
    spa

  • 關閉地址隨機化,more /proc/sys/kernel/randomizevaspace用來查詢地址隨機化是開啓狀態仍是關閉狀態,2表示開啓,0表示關閉。
    3d

  • 構造payload,採用nop+shellcode+retaddr方式(\x4\x3\x2\x1將覆蓋到堆棧上的返回地址的位置,須要將它改成shellcode的地址)
    調試

  • 新打開一個terminal,注入攻擊buf
    code

  • 再打開一個terminal,用GDB調試5238pwn1sc進程,
  • 找到進程1820
  • 用attach追蹤
    blog

(在次步驟切記另外一個注入buf的進程不能按回車,否則./5238pwn1sc的進程不能出來)進程

  • 啓動gdb調試進程,設置斷點,查看注入buf的內存地址

此時發現0x080484ae ret 就跳到咱們覆蓋的retaddr那個地方了

  • 設置斷點後,在另外一個終端按下回車,並尋找返回地址,看到01020304表示返回地址的位置是0xffffd31c,shellcode就緊挨着這個地址,加四字節爲0xffffd320

  • 退出gdb,按照anything+retaddr+nops+shellcode修改input_shellcode以下
    很幸運,get it~

其餘

  • 不少人的kali不能連網,緣由是在開啓虛擬機那裏有一個網絡適配器,將其選項網橋改成net便可。
  • 構造payload最後一個字符千萬不能是\x0a。否則下面的操做就作不了了,\x0a表明回車,咱們繼續往下看。接下來要作的,就是肯定\x4\x3\x2\x1到底該填什麼。
  • 還有一點不太明白就是,我第一次嘗試的時候,用同一臺電腦可是ffffd31c的位置是00000102,所以位置fffd31a纔是shellcode位置如圖

    可是最後執行卻報錯,說操做不合法不是很明白緣由,還在解決中。
相關文章
相關標籤/搜索