我正在嘗試一些簡單的緩衝區溢出,並且我已經控制了我的EIP,但它似乎僅限於嚴格的字符集。對EIP的有限控制
,比如我有一個Python腳本,執行以下操作
buff = "A" * 128
buff += struct.pack("<L", 0x42424242)
sys.stdout.write(buff)
這正確地覆蓋我的EIP到:0x42424242 我的0x42424242值更改爲0x42434445例如,它仍然可以工作。
但只要我進入雷爾如地址:0x804843b我EIP將變爲無效的地址一樣0x000000處
Basicly每個地址我不是在這裏輸入0x42424242的不解析爲一個字母字符我得到一個無效的地址EIP:
作品:
buff += struct.pack("<L", 0x42424242)
buff += struct.pack("<L", 0x45454545)
buff += struct.pack("<L", 0x41424344)
也所有這些上述將導致爲字母字符時印刷等 AAAA EEEE ABCD
不起作用:
buff += struct.pack("<L", 0x804843b)
當印刷這也說明像我們字符: ;
你想添加'x42424242'或'0x42424242'嗎?你的代碼拋出一個錯誤。 –
你是什麼意思? –
'struct.pack(「