UAF 实例-RHme3 CTF 的一道题

题目来源:

https://github.com/xerof4ks/heapwn/tree/master/rhme3

初步了解

堆的题目基本都是选择菜单,这里可以添加,删除,选择,编辑,展示球员,还可以显示队伍,功能看着很多啊

首先玩玩一下这个游戏,便于后期逆向一些数据结构

上面就是球员这个结构有什么信息,第一个 free slot 就相当于球员的 id,这个不用我们输入

remove 就删除咯

select 会输出球员的信息

edit 当前的 palyer,基于上面的 select

show palyer,这个显示的是 select 的 player

show team 会将所有球员信息打印出来

经过对 add_player 的逆向,可以推出 palyer 的结构

编写 add_palyer 查看内存结构

查看内存如下,大小为 0x20,

添加两个球员

了解得差不多了,开始吧

查找漏洞

看下 delete,判断 index 不能大于 10,且全局 players 数组不为 0,而且 delete 后将相应的 players 索引置 0,所以不存在 double free,free 的时候首先将 name 释放,再释放整个 palyer

那看看释放后能否重用,看看 show palyer,因为 delete 没将 selected 置 0,导致可以重用,这可以导致信息泄露

再有 edit 可以导致任意地址写漏洞

那怎么占位呢(下面图说的 0x17 不一定,我们 0x16,0x15 等也能占位,差不多大小就行)

就是创建两个 palyer,都 free 掉,再创建一个 palyer 即可占位,用 name 占第二个 palyer 的结构

还有我们下面写 got 的话有两个目标,一个 atoi,一个 strlen,不过 atoi 的话传入的参数只有四字节,只能传个 sh 过去了,strlen 也是可以的,留给大家尝试,就不贴出来了

exp

原文发布于微信公众号 - 信安之路(xazlsec)

原文发表时间:2017-12-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

回顾Java 8 9 10的新特性,展望即将来临的11和明年的12【大牛经验】

1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议纪录;

1.6K30
来自专栏智能大石头

多线程带智能采集策略的采集系统

    去年年底的时候曾经发过一个数据采集器《网页数据采集器》,那是专门针对某一个网站来进行采集的,如果需要采集新的网站内容,就需要修改代码并重新编译。    ...

22780
来自专栏程序员的知识天地

这4个Python实战项目,让你瞬间读懂Python!

Python当下真的很火。Python实战项目,也一直尤为关注,接下来,和大家介绍下十个Python练手的实战项目

16030
来自专栏Python入门

这4个Python实战项目,让你瞬间读懂Python!

Python当下真的很火。Python实战项目,也一直尤为关注,接下来,和大家介绍下十个Python练手的实战项目

20040
来自专栏技术博客

编写高质量代码改善C#程序的157个建议[用抛异常替代返回错误、不要在不恰当的场合下引发异常、重新引发异常时使用inner Exception]

  自从.NET出现后,关于CLR异常机制的讨论就几乎从未停止过。迄今为止,CLR异常机制让人关注最多的一点就是“效率”问题。其实,这里存在认识上的误区,因为正...

12320
来自专栏向治洪

Mpg123源代码详解

Mpg123与libmad一样,支持mpeg1,2,2.5音频解码。目前来看mpg123比libmad支持了网络播放功能。而且libmad基本上开源社区在200...

23070
来自专栏CSDN技术头条

QtQuick 系列教程之 QML 与 C++ 交互

QML 作为一种灵活高效的界面开发语言已经越来越得到业界的认可。QML 负责界面,C++ 负责逻辑,这也是 Qt 官方推荐的开发方式。那么 QML 与 C++ ...

26030
来自专栏逸鹏说道

04. Web大前端时代之:HTML5+CSS3入门系列~Input新增类型

Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 1.tel:输入...

28770
来自专栏信安之路

2017-NSCTF-PWN

这次比赛值得吐槽的地方很多,但是我要忍住,先讲正经的。 这次总结比赛的两道pwn,都是栈溢出类型的,比较简单。先放上题目链接:http://pan.baidu....

9800
来自专栏Golang语言社区

Go语言并发编程总结

Golang :不要通过共享内存来通信,而应该通过通信来共享内存。这句风靡在Go社区的话,说的就是 goroutine中的 channel ....... 他在...

27990

扫码关注云+社区

领取腾讯云代金券