BCTF2017 BabyUse
BCTF2017 BabyUse
问题
问题在于drop函数中在释放块之后没有清空bss_gun_list中的指针。
一般因为存在对bss_gun_flag的验证,所以不会出现什么问题,但是在use功能中没有验证bss_gun_flag
struct_ptr = bss_gun_list[global_index_saved];
因此use功能存在UAF,不得不说这个设计的还是比较隐蔽的,有点考验眼神。
想法
首先因为题目给了我们分配任意大小堆块的能力,并且我们在阅读代码时候发现并没有对分配的内存进行清零。
这就存在内存未初始化漏洞,我们可以通过布局读出之前释放的usorted块中的fd和bk地址,从而计算出libc的基地址。
其次,我们考虑的是利用UAF漏洞去控制gun结构中的函数表地址,我们在issue部分说了,UAF限制了其它功能唯独没有限制use功能,因此我们的目的就是构造函数表地址,然后进行跳转。
做法
前面提出了利用的思路,但是在实际利用的时候会发现内存未初始化因为存在着'\x00'截断实际上是泄漏不了的。因此这道题的泄漏是一个问题,我在泄漏时尝试了一些内存布局比如
buy(1,15,'a'*15)
buy(1,31,'a'*15)
select(0)
drop(0)
rename(1,15,'AAAA\n')
buy(1,15,'a'*15)
use()
结果发现drop之后再buy的话会挤占掉UAF结构的指针 ORZ。。
这道题应该是晨升师傅做出来的,不得不膜一发。我真是没想到能利用输入时的那个空字节进行部分覆盖,覆盖之后就可以直接得到主模块的基地址和堆基址了。
之后直接泄漏got就能得到libc,再伪造函数表就可以了,这里不多说了。
BCTF2017 BabyUse的更多相关文章
随机推荐
- browser-sync & http server
browser-sync & http server browser-sync https://www.browsersync.io/ usage # step 1 $ npm install ...
- XP局域网访问无权限、不能互相访问问题的完整解决方案
XP局域网访问无权限问题的完整解决方案: 1:用管理员账户登录系统 2:在“开始”-- “运行”里输入 GPEDIT.MSC 目的是打开组策略选项 3:依次展开”WINDOWS设置”-”本地策略”-” ...
- mysql 命令行快速将数据库转移到另一个服务器中(数据库备份还原)
想将A服务器中的数据库快速转移到B服务器中,一般是先从A服务器中备份下来,下载备份数据,还原到B服务器中.使用phpMyAdmin备份和还原针对数据量很小的情况下很方便,数据量大的话很容易中断失败. ...
- REQUIRES_NEW 如果不在一个事务那么自己创建一个事务 如果在一个事务中 自己在这个大事务里面在创建一个子事务 相当于嵌套事务 双层循环那种
REQUIRES_NEW 如果不在一个事务那么自己创建一个事务 如果在一个事务中 自己在这个大事务里面在创建一个子事务 相当于嵌套事务 双层循环那种 不管是否存在事务,业务方法总会自己开启一个事 ...
- 解题:POJ 2888 Magic Bracelet
题面 这题虽然很老了但是挺好的 仍然套Burnside引理(因为有限制你并不能套Polya定理),思路和这个题一样,问题主要是如何求方案. 思路是把放珠子的方案看成一张图,然后就巧妙的变成了一个经典的 ...
- maven项目添加mysql的链接驱动
Maven项目中添加JDBC驱动 在pom.xml配置文件中添加: <dependency> <groupId>mysql</groupId> <arti ...
- jedisClient操作redis实现增删改查功能
这个集群环境下和单机环境下: package com.taotao.sso.dao.impl; import org.springframework.beans.factory.annotation. ...
- 基于CMS的组件复用实践
目前前端项目大多基于Vue.React.Angular等框架来实现,这一类框架都有一个明显的特点:基于模块化以及组件化思维.所以,开发者在使用上述框架时,实际上是在写一个一个的组件,并且组件与组件之间 ...
- mysql concat_ws 与 concat 多字段模糊匹配应用
有时我们希望在表中多个字段检索是否有我们给出的关键字,我们可以使用 concat_ws 和 concat 连接需要检索的字段,如: select * from userInfo where conca ...
- Java基础-变量的定义以及作用域详解
Java基础-变量的定义以及作用域详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字面量 常量(字面量)表示不能改变的数值(程序中直接出现的值).字面量有时也称为直接量,包 ...