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

Windows漏洞利用开发——简单栈溢出_第1张图片

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

Windows漏洞利用开发——简单栈溢出_第2张图片

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

Windows漏洞利用开发——简单栈溢出_第3张图片

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

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

Windows漏洞利用开发——简单栈溢出_第4张图片

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

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

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

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

使用msfconsole进入msf控制台

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

Windows漏洞利用开发——简单栈溢出_第5张图片

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

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

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

Windows漏洞利用开发——简单栈溢出_第6张图片

Windows漏洞利用开发——简单栈溢出_第7张图片

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

Windows漏洞利用开发——简单栈溢出_第8张图片

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

Windows漏洞利用开发——简单栈溢出_第9张图片

Windows漏洞利用开发——简单栈溢出_第10张图片

使用该脚本得到shell

Windows漏洞利用开发——简单栈溢出_第11张图片

Windows漏洞利用开发——简单栈溢出_第12张图片

你可能感兴趣的:(软件安全,安全,系统安全,安全威胁分析,网络安全,栈溢出,kali,MSF)