Python。Pwntools公司。如何获得完整的输出?

2024-06-17 13:39:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习rop链。 我正在处理来自站点https://ropemporium.com的挑战“pivot” 给定的程序要求用户输入2次:第一次将输入放入堆内存(应该是主rop链),第二次应该是有效负载,使缓冲区溢出,将esp设置为第一个rop链的地址。 我正在使用pwntools与程序交互。由于改变了程序流程,rop链应在末尾给出错误。 但是我在控制台中没有看到任何错误。我知道rop链的工作原理与dmesg输出一致。但是程序除了原始的字符串外什么也不显示。 我没有打印这个标志,而是制作了一个名为printf_callfake_str_addr的rop链,以查看它是否正常工作。是的。 那么,如何通过pwntools获得带错误的完整输出和printf呢? 下面是使用pwntools的代码段:

import pwnlib
from pwnlib.tubes import process

p = process.process('./pivot')
addr = get_addr(p.recvuntil('>'))
print('addr: ', addr)
# first input
__main = main_sploit()

# second input
__overfl = 'a' * 0x28
__overfl += 'x' * 4 # ebp
__overfl += buf_overflow(addr)

p.sendline(__main + __overfl)

print(p.recvall())

我使用http://docs.pwntools.com/en/stable/tubes/processes.html中的示例构建了上面的代码


Tags: import程序commain错误processpwntoolsaddr