格式化字符串漏洞

#题一

开启NX、Canary保护,64位,动态编译,IDA分析:

很明显存在格式化字符串漏洞,同时左边还有__stack_chk_fail函数

这边补充一个知识点

随机生成canary被改变后会退出程序,那它如何退出的呢,就是通过执行__stack_chk_fail函数退出程序

既然题目给了我们__stack_chk_fail函数的地址,又存在格式化字符串漏洞,那我们就可以通过

fmtstr_payload(偏移,{被修改的got表:改之后的地址})来将__stack_chk_fail函数的got地址修改为main函数地址,这样在canary被修改之后执行__stack_chk_fail函数退出程序时实际上就相当于返回了main函数

可以看到程序确实是将__stack_chk_fail函数的got地址修改成了fmt(main)函数地址

之后我们就可以再一次栈溢出泄露libc基址了

这边为什么不能是p64(elf.got['read'])+b'%7$s'呢?

首先在%7$s后面补四个a是为了让它变成八个字节,防止它影响后面泄露的地址

而将p64(elf.got['read'])放在b'%7$saaa

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值