对负载中包含空字节的地址进行编码

信息安全 开发 元数据
2021-08-19 05:16:09

我正在研究一个 SEH 漏洞。我在这里面临的问题是所有 POP/POP/RETN 地址都以空字节结尾,所以在它被损坏之后放置的所有内容。

是否可以使用 Metasploit Msfencode 对其自身的 POP/POP/RETN 指令的地址进行编码以克服空字节的问题?

漏洞利用结构为:(300 字节垃圾 + nseh + seh + 3000 字节垃圾)

2个回答

有一个免疫插件 mona.py,由 corelan.be 的优秀人员开发。您可以使用 that 来检查 pop/pop/ret 组合。此外,mona.py 还提供了一个框架,用于将您的漏洞利用模块转换为 metasploit 模块,从而将其移植到那里。

还可以尝试 !mona 建议在将 mona.py 放入免疫调试器的 Pycommands 文件夹后查看利用选项。它可能还会向您建议其他内容。

您可以使用 msfencode,但编码会使有效负载更长,并且 300 字节太少。但是您可以尝试看看它是否适合。

如果上述方法都不起作用,那么您可能必须按照 Ditmar 的建议进行操作。

如果不具体查看二进制文件或更详细地了解您可以访问的内容,就不可能准确回答这个问题。

一般来说,如果您的 SEH 地址包含一个空字节,您应该在有效载荷的末尾添加 nseh&seh 以简化利用。让 nseh 跳转到您的 shellcode 通常可以正常工作,您的问题可能是您的 shellcode 适合 300 个字节(您可以控制?)。

您可以尝试一些技术列表,但我仍然看到您被限制在这 300 个字节内。