2017-2018-2 『网络对抗技术』Exp1:PC平台逆向破解 20165335
一.實驗目標:
本次實踐的對象是一個名為pwn1的linux可執行文件。
該程序正常執行流程是:main調用foo函數,foo函數會簡單回顯任何用戶輸入的字符串。
該程序同時包含另一個代碼片段,getShell,會返回一個可用Shell。正常情況下這個代碼是不會被運行的。我們實踐的目標就是想辦法運行這個代碼片段。我們將學習兩種方法運行這個代碼片段,然后學習如何注入運行任何Shellcode。
?
三個實踐內容如下:
?
手工修改可執行文件,改變程序執行流程,直接跳轉到getShell函數。
利用foo函數的Bof漏洞,構造一個攻擊輸入字符串,覆蓋返回地址,觸發getShell函數。
注入一個自己制作的shellcode并運行這段shellcode。
?
這幾種思路,基本代表現實情況中的攻擊目標:
?
運行原本不可訪問的代碼片段
強行修改程序執行流
以及注入運行任意代碼。
二.基礎指令:
objdump -d:反匯編目標文件中包含的可執行指令。
call+地址 是說這條指令將調用位于地址處的函數
gdb info 查看寄存器的數值
\x0a表示回車
xxd:進行十六進制的輸出,也可以將十六進制輸出轉換為原來的二進制格式。
?
三.直接修改機器指令
先使用objdump指令查看反匯編代碼
call后面表示要跳轉的地址,表示main函數跳轉到foo函數處
我們想要修改地址,跳轉到getshell函數中,機器指令e8后的地址即可,直接修改為為c3即完成跳轉地址轉變
運行結果如下:
四.構造輸入函數,進行bof攻擊:
先確認那幾個字符會覆蓋返回地址,這里使用一個40bit的字符串來進行探測
通過前后對比EIP寄存器的地址,發現字符串中的1234字段覆蓋了地址,那么只需要在對應的位置將其進行eip地址的覆蓋修改
同時,驗證字符串11111111222222223333333344444444\x7d\x84\x04\x08的準確性
最后,將字符串注入,完成攻擊
五.注入shellcode并執行
首先先確認堆棧,文件堆??蓤绦?#xff0c;關閉地址隨機化,防止地址的變化
構造payload:使用命令perl -e?'print "A" x 32;print "\x04\x03\x02\x01\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
用A來填滿緩沖區,以確認,尋找字符串中對應的的4個字節
輸入命令??(cat input_shellcode;cat) | ./20165335 注入攻擊bof
在另外一個終端進行gdb調試,先使用 ps -ef | grep?20165335尋找進程號
用attach 命令調用·進程
同時,反匯編,在函數return? esp指針變化執行后的ret語句出,設置斷點
使用info r esp 查看esp寄存器的值,找出shellcode的地址(地址就在指針的后面)
最后,將找到的4個字節的地址填充進去,完成注入,再次運行程序,實現攻擊
?六. 實驗收獲與感想
在此次實驗中,我感受到了實驗原理的重要性,經過劉老師的原理講解,使得在實驗中思路清晰,知道現在自己在做什么,這樣做的目的是什么,使得在過程中,清晰明了,
也經過實驗,更深刻的認識到了其中的原理以及eip寄存器,地址等在內存的實際變化,受益匪淺。
漏洞,就是能夠使得惡意代碼,經過各種非正常的方式注入計算機,并進行運行的計算機運行bug。
漏洞可以使得計算機按照其他人的指令,操作進行運行,可以使得惡意代碼不經過各種安全方式運行程序,從而執行shellcode,破壞計算機
?
NOP 機器碼90:NOP指令為空指令,計算機不進行任何操作
JNE 機器碼75:條件轉移指令,對比是否相等,不相等就跳轉
JE 機器碼74 :條件轉移指令,對比是否相等,相等就跳轉
JMP:無條件轉移指令。
段內直接短轉 機器碼:EB
段內直接近轉移Jmp near 機器碼:E9
段內間接轉移 Jmp word 機器碼:FF
段間直接(遠)轉移Jmp far 機器碼:EA
CMP:比較指令,對標志寄存器產生影響
轉載于:https://www.cnblogs.com/x20165335/p/10525131.html
總結
以上是生活随笔為你收集整理的2017-2018-2 『网络对抗技术』Exp1:PC平台逆向破解 20165335的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里云ECS服务器的搭建
- 下一篇: Yahoo Programming Co