Windows漏洞利用开发——简单栈溢出
实验6 ?Windows漏洞利用开发
6.1实验名称
Windows漏洞利用开发
6.2实验目的
学习windows漏洞利用开发,使用kali?linux相关工具对windows内目标程序进行漏洞利用
6.3实验步骤及内容
第一阶段:简单栈溢出
- 分析栈溢出原理
- 寻找溢出点,了解pattern_create和pattern_offset计算溢出点的原理
- 寻找JMP ESP跳板,分析利用JMP ESP跳板劫持程序流的原理
- 编写漏洞利用脚本,自动化攻击
栈溢出的原理如下
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!