cgctf when_did_you_born 栈溢出简单利用

拿到题目,先checksec下,看下防护措施:
在这里插入图片描述
没有开启PIE。
直接放到IDA里看下:
在这里插入图片描述
有些变量名为了方便看,我已经修改过了。图中箭头处即是溢出点。
分析下
第一次输入overflowme,如果等于1926就会退出,但是想要拿到flag,就需要overflowme的值为1926,那就很明显了,第一次输入的时候随便输个数只要不是1926就行,第二次输入v4 这个数组的时候,利用缓冲区溢出,将overflowme这个变量的值给覆盖成1926就行了,将1926转化为16进制为0x786。
通过IDA看下数组和overflow这个变量之间的距离:
在这里插入图片描述
0x20-0x18,得到距离是8个字节。只要填充8个字节的垃圾数据,再将其后4个字节的空间覆盖为0x00000786就可以了。此时栈空间如下图:(注意little-endian)
在这里插入图片描述
写下exp:
在这里插入图片描述
运行该脚本即可拿到shell。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值