使用 Python3 的 pwntools 打包有效负载的正确方法是什么

逆向工程 Python 工具
2021-07-10 15:40:55

Megabeets教程“雷达 2 之旅 - 第 2 部分:利用”中,他展示了如何使用 Python2 创建有效负载的示例

# Initial payload
payload  =  "A"*140 # padding
ropchain =  p32(puts_plt)
ropchain += p32(entry_point)
ropchain += p32(puts_got)

payload = payload + ropchain

这将如何移植到 Python3?p32是一个 32 位整数。Python3 使用bytes()代替字符串。这样做的正确方法是什么?

python3-pwntools的文档显示有一些有效载荷助手但是,我无法让他们工作。更糟糕的是,这些助手在 Python2 中也可用,但没有使用(不知道为什么)。

我将如何使用 编写 Megabeet 的示例python3-pwntools

1个回答

实际上,这是一个编程问题,而不是一个 RE 问题。无论如何,您只需要通过b'A'*140.

>>> from pwn import *
>>>
>>> puts_plt = 0x8048390
>>> puts_got = 0x804a014
>>> entry_point = 0x80483d0
>>>
>>> payload  =  b'A' * 40   # Only 40 for the example
>>> ropchain =  p32(puts_plt)
>>> ropchain += p32(entry_point)
>>> ropchain += p32(puts_got)
>>>
>>> payload = payload + ropchain
>>>
>>> print(payload)
b'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\x90\x83\x04\x08\xd0\x83\x04\x08\x14\xa0\x04\x08'
>>>

如需进一步阅读,您可以阅读Python3 文档中字符串和字节文字页面。