问题标签 [pwntools]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - PwnTools recv() 在输出上直接期望输入
嗨,我有一个问题,我似乎找不到任何解决方案。(也许我只是在用英语正确措辞搜索方面很糟糕)
我正在尝试使用 pwntools 从 python 执行一个二进制文件,并在自己发送一些输入之前完全读取它的输出。
我的二进制文件的输出如下:
我想阅读第一行、第二行和第三行的输出部分(':' 是最后一个字符)。
输出的第三行末尾不包含换行符,并希望用户直接进行输入。但是,无论我尝试什么,我都无法读取第三行开头的输出内容。
我目前试图实现这一目标的方式:
我对标准输入和标准输出有误解吗?第三行的“输入输入:”不是我在输入之前应该能够接收的输出的一部分吗?
提前致谢
ctf - pwn 在服务器开发中是什么意思(在 CTF 中)?
Pwn - 我知道这是 CTF 中的一个类别,您可以在其中利用服务器来查找标志。
有一个名为 pwntools 的库,它是一个 CTF 框架,并在 python 中利用开发库。
我不明白的是为什么它被称为“PWN”,它是一个缩写吗?
pwn 也拥有/支配某人,但这个定义适合吗?
谢谢帮忙^^
python - python(pwntools) 中是否有任何函数可以用来知道堆栈中环境变量的地址?
我正在尝试进行返回 libc 攻击。问题是我需要堆栈中环境变量的地址作为小工具的参数。我用python尝试了以下代码。但似乎它给出了一个偏移量或其他东西?不确定。
它给出的结果是 0x9d4380。我有点需要像 0x7ffe 这样的堆栈地址.....
CTF 挑战位于需要 ssh 的容器中,因此我可能无法使用 gdb。
python - 如何在 python pwntools 中指定进程?
无法在Python 2.7.17
pwntools 中设置进程。
源代码:
我试过from pwn import *
:
那行不通。然后我直接导入流程:
我收到导入错误。如何解决这个问题?
python - 在 python3 中导入 pwntools 时,回车 '\r' 停止工作
我有这个小方法来打印 80 个字符的重叠字符串:
它工作得很好,但如果我 import pwntools
,例如 with import pwn
,它会停止工作:\r
不再打印字符。
python - 如何使用 pwntools 正确捕获进程的输出
我目前对如何使用 python3 的 pwntools 库来利用程序感到困惑——主要是将输入发送到易受攻击的程序中。这是我当前的 python 脚本。
我正在尝试利用的程序如下 - 这不是关于如何利用该程序,而是关于使用脚本正确地自动化它。
该过程打开正常。sendlineafter 阻塞,直到它发送该行,因此如果它不匹配它会无限期地等待。但是,它运行良好,因此应该发送输入。由于以下原因,输出应从 recvLine 接收 90 A
puts(buffer)
输出输入的字符串。
但是,返回的只是
b''
,这似乎表明易受攻击的程序没有接收输入并返回空字符串。
有谁知道这是什么原因造成的?
python-import - pwntools Python 模块在 python2 中不起作用,但在 python3 中起作用
我有一个 python2 脚本,我想使用pwntools python 模块运行,我尝试使用以下命令运行它:
蟒蛇测试.py
但后来我得到:
文件“test.py”,第 3 行,在 from pwn import * ImportError: No module named pwn
但是当我用 python3 尝试它时,它克服了那个错误,但它遇到了其他错误,因为它是一个 python2 脚本。为什么当我使用 python2 运行 pwntools 时它不起作用,并且我可以在不将整个东西移植到 python3 的情况下运行我的脚本吗?
c - pwntools 中的 p64() 无法正常工作
我想将输入发送到包含不可打印字符(如“\x90”)的进程。当我尝试像这样发送它时p.sendline(p64(0x414190))
,我的程序将它打印回来,返回AA\x90
。它将 "\x90" 作为一个字符串,而不是一个字节。有人可以帮我如何发送原始字节吗?
我的程序(容易格式化字符串,我不需要被告知):
gdb - 调试 pwntools 打开的程序
我正在尝试为大学课程做一个stackoverflow。我要利用的二进制文件有一个金丝雀,但是,有一种方法可以将该金丝雀泄漏到标准输出。金丝雀当然由一些随机字节组成,所以我不能只从程序输出到标准输出的字符串中读取它们。
出于这个原因,我正在使用 python 和 pwntools,例如p.recv(timeout = 0.01).encode("hex")
.
(我使用 pwntools 只是因为我不知道以十六进制格式读取输出的另一种方法,如果有更简单的方法,我当然可以使用其他方法)
这或多或少可以按预期工作,我设法编写了经过金丝雀的内存区域。但是,我得到了一个段错误,所以我显然对我造成的 stackoverflow 有一些问题。我需要一种调试方法,例如在提供导致堆栈溢出的输入后查看堆栈。
现在不用多说,实际的问题是:我可以调试我process("./myprog")
在 GDB 中使用 pwntools(如 )或其他可以向我显示堆栈内容的程序启动的进程吗?
我已经尝试在 python 中获取 pid 并使用 gdb attach 附加到该 pid,但这不起作用。
注意:我试图利用的二进制文件有 guid 集。不知道这是否重要。