Windows漏洞利用开发
学习windows漏洞利用开发,使用kali?linux相关工具对windows内目标程序进行漏洞利用
第一阶段:简单栈溢出
栈溢出的原理如下
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