攻防世界(pwn)easyfmt

这题出的很奇怪,本地调试不知道为什么出问题,远程也调了很久才通,希望路过的大佬提出更好的思路和解题方式!

查看一下保护:
在这里插入图片描述

开了canary,NX,部分打开RELRO,没开PIE,可以尝试got表的覆盖。
这里不能有时候全信,还是要打开IDA自己分析才行。
在这里插入图片描述

可以看到有明显的格式化字符串漏洞,看看怎么利用他。
要运行到格式化字符串漏洞,我们必须完成一个判定,我们进入CheckIn函数看看。
在这里插入图片描述

CheckIn函数其实就是程序产生一个随机数,然后需要我们输入一个数字,程序检查我们输入的数字和随机数是否一样,一样便可以进入下一阶段。
随机数的范围不大,我们就直接爆破就没问题了。
这里我选择的是手动爆破,反正概率很高,你也可以写try…Except…来写一个自动爆破的函数。
这里选择输入1,一直运行就有几率成功。
好的,进入格式化字符串漏洞的重头戏,由于程序运行到一次就会exit(0),我们首先利用格式化字符串漏洞把exit函数的got地址改写了(注意不是got表里边的地址)。
我们首先查看一下偏移:
在这里插入图片描述

这里可以看到有两种方式,一种是工具提供的偏移为7,另一种是

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值