我有一个我想利用的可执行文件。该文件的输出如下所示:
$ ./vuln_nostack
Enter some text:
enteringTEXT
You entered: enteringTEXT
您输入一些文本,程序会将其吐回。
我想用 python 和 pwntools 运行这个程序(然后利用它)。
到目前为止,我的 pwntools 程序的功能部分如下所示:
from concurrent.futures import process
from sys import stdout
from pwn import *
import time
pty = process.PTY
p = process("./vuln_nostack", stdin=pty, stdout=pty)
ss = p.recv()
p.clean()
asstring = ss.decode("utf-8")
print(asstring)
这工作正常,它获取第一行然后打印它。
我现在要做的是向程序发送一条消息,然后得到最后一行。
我已经尝试过这些方面的东西:
p.send(b"dong")
p.clean()
print(p.recv())
我不确定 send 是否真的发送过任何东西,但是一旦我添加了recv
函数,程序就会挂起并且永远不会完成。
我的猜测是可执行文件的输入从未正确给出,因此它仍在等待。
我如何真正将消息传递给可执行文件,以便它可以继续前进并在最后一行发送给我?