我正在尝试pwntools在macOS 上安装.
每当我尝试时pip3 install pwntools,它暂停一段时间Running setup.py bdist_wheel for capstone ...然后打印Failed building wheel for capstone(我假设'capstone'是一些依赖)然后是一个很长的错误消息.这是完整的输出:
Collecting pwntools
Collecting tox>=1.8.1 (from pwntools)
Using cached https://files.pythonhosted.org/packages/8f/c3/64bade66e6188a0dc02689392d5c782a9eb6648b54ddc2db034aa495b6a2/tox-3.5.2-py2.py3-none-any.whl
Requirement already satisfied: pyelftools>=0.2.4 in /usr/local/lib/python3.7/site-packages (from pwntools) (0.25)
Collecting capstone>=3.0.5rc2 (from pwntools)
Using cached https://files.pythonhosted.org/packages/2b/61/d66abbf007f8cd2643095131c7dcb8186cc42603aea6d5a18cddcbf390a5/capstone-3.0.5.post1.tar.gz
Requirement already satisfied: python-dateutil in /usr/local/lib/python3.7/site-packages (from pwntools) (2.7.3)
Requirement already satisfied: psutil>=3.3.0 in /usr/local/lib/python3.7/site-packages (from pwntools) (5.4.7)
Collecting pyserial>=2.7 (from pwntools)
Using cached https://files.pythonhosted.org/packages/0d/e4/2a744dd9e3be04a0c0907414e2a01a7c88bb3915cbe3c8cc06e209f59c30/pyserial-3.4-py2.py3-none-any.whl
Requirement already satisfied: sortedcontainers<2.0 in /usr/local/lib/python3.7/site-packages (from pwntools) …Run Code Online (Sandbox Code Playgroud) 如果你们熟悉漏洞利用开发的基础知识,您就会知道,当您利用潜在的缓冲区溢出时,通常是为了找到“破坏”您想要修改的特定寄存器的缓冲区的偏移量,您会发送如下输入:
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))
Run Code Online (Sandbox Code Playgroud)
但是,我无法(至少使用 pwntools)获取 PE 文件的核心文件。有没有其他方法可以用Python来实现呢?请注意,我并不是要求像 pwntools 那样抽象的方法,即使只是在 Python 中获取 corefile 也是我所需要的。我可以自己编写循环函数,没有问题。
我正在尝试使用 python 的 pwntools 。我想使用启动一个进程
from pwn import *
s = process('./step1')
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我收到以下错误消息:
回溯(最近一次调用):文件“”,第1行,文件“/usr/local/lib/python2.7/dist-packages/pwnlib/tubes/process.py”,第267行,init stdin,stdout 、stderr、master、slave = self._handles(*handles) 文件“/usr/local/lib/python2.7/dist-packages/pwnlib/tubes/process.py”,第 603 行,在 _handles tty.setraw(master )文件“/usr/lib/python2.7/tty.py”,第 28 行,在 setraw tcsetattr(fd, when, mode) termios.error: (22, '无效参数')
我已经位于包含文件step1 的目录中,并且step1 是可执行的。有谁知道为什么我会收到此错误。如果有帮助的话,我正在 Windows 10 上使用 Linux 子系统。
我正在尝试为大学的一门课程做一个 stackoverflow。我要利用的二进制文件有一个金丝雀,但是,有一种方法可以将该金丝雀泄漏到标准输出。当然,金丝雀由一些随机字节组成,因此我不能只从程序输出到标准输出的字符串中读取它们。
因此,我使用 python 和 pwntools,例如p.recv(timeout = 0.01).encode("hex").
(我使用 pwntools 只是因为我不知道以十六进制格式读取输出的另一种方法,如果有更简单的方法我当然可以使用其他方法)
这或多或少可以按预期工作,我设法写入了金丝雀之后的内存区域。但是,我遇到了段错误,所以我显然对我造成的 stackoverflow 有一些问题。我需要一种调试方法,比如在提供导致堆栈溢出的输入后查看堆栈。
现在,不用多说,实际的问题是:我可以调试在 GDB 中使用 pwntools (如 )启动的进程process("./myprog")或可以向我显示堆栈内容的其他程序吗?
我已经尝试在 python 中获取 pid 并使用 gdb Attach 附加到该 pid,但这不起作用。
注意:我尝试利用的二进制文件具有 guid 集。不知道这是否重要。
出乎意料的是,我的 python 安装似乎已损坏。当尝试运行 python 脚本时,我得到以下信息...
[michael@arch ~/Code/CTF/aero/house]$ ./solve.py
Traceback (most recent call last):
File "/home/michael/Code/CTF/aero/house/./solve.py", line 5, in <module>
from pwn import *
File "/home/michael/.local/lib/python3.9/site-packages/pwn/__init__.py", line 20, in <module>
pwnlib.update.check_automatically()
File "/home/michael/.local/lib/python3.9/site-packages/pwnlib/update.py", line 199, in check_automatically
log.info("\n".join(message))
File "/home/michael/.local/lib/python3.9/site-packages/pwnlib/log.py", line 395, in info
self._log(logging.INFO, message, args, kwargs, 'info')
File "/home/michael/.local/lib/python3.9/site-packages/pwnlib/log.py", line 292, in _log
msg = six.ensure_text(msg)
AttributeError: module 'six' has no attribute 'ensure_text'
Run Code Online (Sandbox Code Playgroud)
尝试使用 pip 重新安装模块也会失败......
[michael@arch ~/Code/CTF/aero/house]$ python3 -m pip install pwntools
Traceback (most recent call last):
File …Run Code Online (Sandbox Code Playgroud) 无法在 pwntools 中设置进程Python 2.7.17。
源代码:
from pwn import *
s=process('/root/Dokumente/Scripts/example_program')
Run Code Online (Sandbox Code Playgroud)
我试过from pwn import *:
root@bitpc:~# python pwn.py
Traceback (most recent call last):
File "pwn.py", line 1, in <module>
from pwn import *
File "/root/pwn.py", line 2, in <module>
s=process('/root/Dokumente/Scripts/example_program')
NameError: name 'process' is not defined
Run Code Online (Sandbox Code Playgroud)
那是行不通的。然后我直接导入流程:
root@bitpc:~# python pwn.py
Traceback (most recent call last):
File "pwn.py", line 1, in <module>
from pwn import process
File "/root/pwn.py", line 1, in <module>
from pwn import process
ImportError: cannot …Run Code Online (Sandbox Code Playgroud) 您好,我有一个问题,我似乎找不到任何解决方案。(也许我只是不擅长用英语正确表达搜索)
我正在尝试使用 pwntools 从 python 执行二进制文件,并在自己发送一些输入之前完全读取其输出。
我的二进制文件的输出如下:
Testmessage1
Testmessage2
Enter input: <binary expects me to input stuff here>
Run Code Online (Sandbox Code Playgroud)
我想读取第一行、第二行和第三行的输出部分(“:”是最后一个字符)。
输出的第三行末尾不包含换行符,并希望用户直接输入。但是,无论我如何尝试,我都无法读取第三行开头的输出内容。
我目前尝试实现此目标的方法:
Testmessage1
Testmessage2
Enter input: <binary expects me to input stuff here>
Run Code Online (Sandbox Code Playgroud)
我是否误解了标准输入和标准输出?第三行的“Enter input:”不是我在输入之前应该能够接收到的输出的一部分吗?
提前致谢
PC: windows 11 wsl 2, ubuntu-22.04
I was gonna install 'pwntools' by following these instructions
apt-get update
apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade pwntools
Run Code Online (Sandbox Code Playgroud)
after installing i tested it. And this happened.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/kimminjun514/.local/lib/python3.10/site-packages/pwn/__init__.py", line 4, in <module>
from pwn.toplevel import *
File "/home/kimminjun514/.local/lib/python3.10/site-packages/pwn/toplevel.py", line 23, in <module>
from pwnlib import *
File "/home/kimminjun514/.local/lib/python3.10/site-packages/pwnlib/dynelf.py", line …Run Code Online (Sandbox Code Playgroud) 假设我有一个简单的可执行文件,我想找到 main 的地址。通常,我从输出中获取地址objdump,然后在pwn脚本中使用它。我想让我的脚本更加通用,而不使用objdump. 有什么办法可以用 pwn 做到这一点吗?
pwntools ×9
python ×6
pip ×2
python-3.x ×2
arch ×1
exploit ×1
gdb ×1
importerror ×1
installation ×1
macos ×1
nameerror ×1
objdump ×1
stdin ×1
stdout ×1