8

如果你们中的任何人熟悉漏洞利用开发的基础知识,就会知道当您利用潜在的缓冲区溢出时,通常是为了找到“破坏”您要修改的特定寄存器的缓冲区偏移量,您发送这样的输入:

Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag

然后通过使用调试器并将发现溢出到所需缓冲区位置的值传递给工具,您将获得偏移量以知道从哪里开始插入有效负载。

使用仅支持 ELF 文件的 pwntools,这可以自动化,使用cyclic(200, n=8)和巧妙地跳过调试器步骤cyclic_find(core.read(core.rsp, 8), n=8)。这是一个完整的例子:

from pwn import *

elf = ELF("./exploit_this") # reminds the user that only ELFs are supported

p = process("./exploit_this")
p.sendline(cyclic(200, n=8))
p.wait()

core = p.corefile

print(cyclic_find(core.read(core.rsp, 8), n=8))

但是,我至少不能使用 pwntools 获取 PE 文件的核心文件。有没有其他方法可以在 Python 中做到这一点?请注意,我并没有要求像使用 pwntools 那样抽象的方法,即使只是在 Python 中获取核心文件也是我需要的。我可以自己编写循环函数没问题。

4

0 回答 0