0

我有一个我想利用的可执行文件。该文件的输出如下所示:

$ ./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函数,程序就会挂起并且永远不会完成。

我的猜测是可执行文件的输入从未正确给出,因此它仍在等待。

我如何真正将消息传递给可执行文件,以便它可以继续前进并在最后一行发送给我?

4

2 回答 2

0

您还可以使用p.sendline()

p.sendline("payload")

这会在您的字节后自动添加断线。

此外,要了解您的漏洞利用程序是否正在向/从程序发送/接收消息,您可以通过添加以下分配来使用调试上下文:

context.log_level = 'debug'
于 2022-02-12T15:37:41.393 回答
0

答案比以前假设的要简单得多。

我只需要发送中的断线:

p.send("payload \n")
于 2022-02-03T19:43:21.983 回答