Task1shell
本身編寫一個64位shellcode。參考shellcode指導。編程
本身編寫一個有漏洞的64位C程序,功能相似咱們實驗1中的樣例pwn1。使用本身編寫的shellcode進行注入。網絡
Task 2(未完成)函數
進一步學習並作ret2lib及rop的實踐,以繞過「堆棧執行保護」。參考ROP學習
Task 3(未完成)測試
可研究實踐任何繞過前面預設條件的攻擊方法;可研究Windows平臺的相似技術實踐。3d
或任何本身想弄明白的相關問題。包括非編程實踐,如:咱們當前的程序還有這樣的漏洞嗎?調試
一、打開創段,建立shellcode.c,輸入shellcode源碼:
code
二、編譯生成可執行文件,執行查看效果:
blog
三、反彙編查看代碼objdump -d shellcode | more
,而且找到main函數:
四、打開另外一終端,將main函數的16進制代碼寫進一個C程序中來測試咱們得到的shellcode是否正確。這裏折騰了兩三個小時後失敗了。對於總體的流程我已經爛熟於心了,但一直卡在一個地方:根據反彙編代碼,用匯編寫出代碼。這一點我始終學不會,學姐的博客也沒有寫出來。因而我決定先跳過這一步,拿現成的彙編代碼來進行下面的步驟。也但願本身可以在從此的學習中解決這個遺憾。
五、建立newshellcode.nasm,輸入以下代碼:
六、前後輸入nasm -felf32 newshellcode.nasm -o newshellcode.o
和ld -melf_i386 newshellcode.o -o newshellcode.bin
,進行彙編與連接,,再輸入./newshellcode
運行嘗試,成功。
七、查看反彙編代碼,提取出來
shellcode[]="\x31,\xc0,\x31,\xd2,\xb0,\x0b,\x52,\x66,\x68,\x2d,\x63,\x89,\xe7,\x52,\x68,\x62,\x61,\x73,\x68,\x68,\x62,\x69,\x6e,\x2f,\x68,\x2f,\x2f,\x2f,\x2f,\x89,\xe3,\x52,\xeb,\x06,\x57,\x53,\x89,\xe1,\xcd,\x80,\xe8,\xf5,\xff,\xff,\xff,\x2f,\x62,\x69,\x6e,\x2f,\x73,\x68"
八、放進C語言程序進行調試:
九、調試,成功:
十、使用實驗一的第三個步驟的方法進行注入,結果以下: