Windows漏洞利用开发——简单栈溢出

实验6  Windows漏洞利用开发

6.1实验名称

Windows漏洞利用开发

6.2实验目的

学习windows漏洞利用开发,使用kali linux相关工具对windows内目标程序进行漏洞利用

6.3实验步骤及内容

阶段:简单栈溢出

  1. 分析栈溢出原理
  2. 寻找溢出点,了解pattern_create和pattern_offset计算溢出点的原理
  3. 寻找JMP ESP跳板,分析利用JMP ESP跳板劫持程序流的原理
  4. 编写漏洞利用脚本,自动化攻击

栈溢出的原理如下

1.任意非00的指令覆盖buffer和EBP

2.从程序已经加载的dll中获取他们的jmp esp指令地址。

3.使用jmp esp的指令地址覆盖ReturnAddress

4.从下一行开始填充Shellcode

首先配置环境,同时开启两个虚拟机,使用ipconfig和ifconfig命令查看xp和kali虚拟机的ip地址

这里可以看出xp的ip地址是192.168.216.159,kali的ip地址是192.168.216.255

在kali上用ping命令检查发现可以ping通xp,于是在xp上启动目标程序bof-server.exe,端口选择为4242

接下来关闭xp下的栈溢出保护

之后在kali上尝试连接xp主机,发现可以连上

用python生成1024个A,并且发送给xp

之后xp系统上的bof-server.exe产生崩溃

检查错误原因发现偏移处是41414141,这正是A的ascii码,说明发生了溢出

使用msfconsole进入msf控制台

使用pattern_create.rb产生1024个有序的字符,用同样的方式发送到xp,发现出现了溢出

然而此时的偏移是72413372,也就是说可以利用这个偏移来定位buf的长度

使用pattern_offset计算得到长度是第520位

接下来寻找一个jmp esp的地址,用调试工具打开bof-server查看其调用的dll文件,这里选取WS2_32.dll这个文件

把这个文件拷贝到kali中,使用msf找到jump esp的地址

可以看到,我们得出的JMP ESP指令的地址为: 0x71a22b53。将刚才找到的信息填入攻击程序的空里

使用该脚本得到shell

猜你喜欢

转载自blog.csdn.net/weixin_49816179/article/details/135171348