格式化字符串漏洞泄露StackCanary

2017陕西省的pwn_box这个题作为调试的程序,gdb作为工具

先来熟悉原理,推荐几个pdf学习懂原理吧:

Format String Exploitation-Tutorial By Saif El-Sherei
Exploiting Format String Vulnerabilities  scut/team teso

看完这几个会对原理有深刻认识,然后如何操作呢?

戳我


然后就是理论到实践的部分,运行程序发现会对用户名进行检测(简单逆向得到用户名为admin2017),使用IDA对程序进行分析,发现在函数sub_8048845里有个很明显的缓冲区溢出的漏洞可以利用

我们的目标是else里面的printf(&format),要让它泄露出Canary的值,下面调试来找:

因为这个值是动态变化的,所以我们要找到它存在哪个地方,然后泄露

这个地方是Canary的初始值,我们使用gdb调试找到它

此时,查看ebp-0xC的值,然后打印内存,即可找到Canary

找到了Canary,删除这个断点,重新下个0x80488C3的断点

我们的输入是%p %p %p………………,然后观察打印出来栈中的值

运行到这儿,然后查看我们的输出

这几个值是什么呢?查看下esp内存地址所在的值

所以,第一个%p,输出的是0x0804b080,那么我们的Canary是第七个!


所以,参数就构造好了:%7$p(原理在pdf和链接中有,不赘述)

第一步完成,运行截图:

因此我们就绕过了Canary

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值