(攻防世界)(pwn)babyfengshui

入门级的堆题,拿来学习还是不错的。

做这道题之前,最好还是先对堆的数据结构有一定的了解。
拿到题目,下载附件,查看保护。
在这里插入图片描述
一个32位的程序,开了NX和Canary保护,这都不是重头戏毕竟这题不用栈,栈保护只是锦上添花罢了。
把文件拖进IDA查看逻辑:
在这里插入图片描述

可以看到,典型的菜单题,这很pwn,实现了增删改查四个功能,像极了C语言程序设计的期末结业程序设计题哈哈哈,暴露年龄。
进入增加用户功能:
在这里插入图片描述

可以看到,程序先malloc一个块用于保存数据,再malloc一个块作为结构体,用于保存name和description,name为124,也就是0x7c,注意他们都是指针哦。
在这里插入图片描述
这里有个保护就是v3+*ptr[a1]<=*ptr[a1]-4才行
意思就是你写入的数据不能把后面的结构体给覆盖了,但是这却没有考虑堆申请的规则。

题目思路:

我们首先申请两个堆,然后释放掉一个,在申请一个大的,根据堆的数据结构申请规则,就会产生绕过保护的现象,如下图:

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值