山东001在线

 找回密码
 立即注册
搜索
查看: 312|回复: 0

新闻速览路远征——GLIBC2.37后时代的IO攻击之道(终2023/3/27 19:44:47

[复制链接]
  • TA的每日心情
    奋斗
    2023-6-30 13:23
  • 签到天数: 105 天

    [LV.6]常住居民II

    发表于 2023-3-27 19:44:45 | 显示全部楼层 |阅读模式

    1[url]http://www.yxfzedu.com/读写驱动[/url]的最新消息可以到我们平台网站了解一下,也可以咨询客服人员进行详细的解答![align=center]http://resources.yxfzedu.com/images/other_images/mengya_lunbo.png[/align]


    2




    如何做手堆栈内核和IO。征战万千比赛场,坐牢。数爆零又重现。


    年少万兜鍪,雄心壮志仍未休。我命由我不由天,开卷。万千大佬背影远。





    看到这个题目,估计很多人都举得这篇文章没有际内容,但是恰恰相反,如果你学会了很多技巧,但仍在在比赛中难以有所输出,还是有必要看一下的。


    一、前文汇总








    在除了第0章之外,个人认为__魑魅魍魉应该是综合评分比较高的技巧,但大部分人可能觉得__一骑当千来的更暴力,毕竟以目前角度来看,它可以通杀沙盒,版主也把他列为了精华。说一下,__魑魅魍魉是我比较先发现的链,发现它时因为攻击方式主要分为4步,所以我将各个步骤分为魑、魅、魍、魉,这也是字的由来。


    二、GLIBC中IO_FILE挖洞经济型分析
    1从7看漏洞修复方向
    从9中_首条链修复已经过了4年,历经+53变更,___修复,调整,再加上从7之后不再刷新缓冲区,可以看出GNU对非正常退出函数的保护已经越来与完善,但是第二条链仍然坚挺的存活,所以可以认为:_第二条链是GNU的官方测试后门,让我们帮助他们免费挖掘漏洞。当第二条链被修复时,就是GNU认为它没有利用价值的时候。所以,目前包括IO在内所有结构体漏洞的挖掘都还是有意义的。





    当然,7不会是常见版本,按照的尿性,9大概率是稳定版本,到时候宽字符的问题是必然会解决的,也就是我们还有大概1年的时间挥霍。本来按照原有的路径挖掘方式,IO漏洞是可以很就全部挖完的,从2中也可以看出,攻击手段越来越少,HB已经开始攻击_结构体了,当GNU对函数下手的时候,就是IO的终点了。但是,GLIBC7让我看到了一些不同,GNU在对IO有着较大野心,可以看出他们有着程序的独特的固执,在代码的雅性上越走越远。


    2压垮第二条链的比较后一根稻草
    我认为__魑魅魍魉应该是综合评分比较高的利用方式,主要是鉴于它是一套攻击思路,而非简单的一个攻击链,攻击方式难以被修复,我在第4篇时写的它需要3个条件。



    有结构体之间的强制转化,或者结构体指针的使用。
    存在、等内存覆写函数。
    执行完第2步后,还存在可能控制的执行流。

    以下分析是个人观点,



    对于第1步,这个就是GNU之后的修订方向,他们想使用更多的结构体复用。修订难度:7(0-9)
    对于第2步,为了处理宽字符问题,这个基本不太可能。修订难度:9
    对于第3步,从理论上这个修复很简单,但际操作非常复杂,涉及,__秦月汉关,等等许多环节,属于不难但繁琐的内容。修订难度:8

    如此看来,貌似首步修订比较简单。但关键点就在于,GLIBC7新加的内容就是在为了代码的复用性,代码的强复用就必然会在后面的修改中大量使用结构体的复用,也让这一步成了比较难修订的一步。照此以往,__魑魅魍魉可能会变成压垮第二条链的比较后一根稻草。


    3风云突变
    在一骑当千中我说过,我本来不想把它公开的,这一技巧和__琴瑟琵琶一样其非常简单,我也很好奇为什么5、6年了还没有人发现。不想公开的原因是它的修复非常简单,如果修复了今后将失去沙盒很多的乐趣。


    、挖掘及攻击思路
    目前,各路大神的挖掘思路就是在操作次数尽量少()的情况下攻击虚表。因为堆题不能直接控制执行流,所以堆题就成了结合IO比较好的工具。结合我做题以来的经验,我将堆的问题转化为几类。




    首先是内存修改的次数,有些题目可以多次(2次及以上)修改内存,有些只能一次。
    修改内存的情况,有些可以任意写,既可以申请到此块内存;有些不能任意写入,只能写入堆值或者地址,例如。
    露的情况,除了个别方法外,大都需要露内存,有些题目还能够再次露内存中的数据,例如露_,我称为二次露。除了个别情况外,大部分题目要想现“二次露”必须要能申请到所要露的位置,显然,如果不能对内存有任意写的能力,是不可能现“二次露”的(设置的沙雕题目除外)。





    说明:题目的种类万万千,以上的情况排除了出题人给出的奇葩显示或写入模式,是在比较基本的输入与输出的情况下,抽象出来题目类型。


    1修改内存:地址不限、次数不限、数据不限;可二次露
    这种题目比较为简单,4之前打,4及之后打EOP或者_IO都可以,如果有IO函数,还可以攻击秦月汉关,基本上都是以为主。


    2修改内存:地址不限、次数不限、数据不限;不可二次露
    这种题目基本和上面的情况一样,只是在不能二次露的情况下,我们可以直接强制改写。


    3修改内存:地址不限、一次、数据不限;可二次露
    4之前打,4及之后打EOP或者_IO都可以。因为可以二次露,所以EOP也可以用。


    4修改内存:地址不限、一次、数据不限;不可二次露
    4之前打,4及之后打,EOP,_IO都可以。





    说明:从这里开始是个转折,一般如果可以任意改写内存都是可以申请到这一块内存,在这种情况下,改写是非常直管且简单的,即使4之后没有了,也可以通过修改,EOP等手段来进行攻击。而如果法任意改写内存则只能够通过IO来进行攻击。


    5修改内存:地址不限、次数不限、修改为堆;可二次露(不可能)
    如果不能任意改写内存,说明法申请到这个内存,二次露基本不太可能。


    6修改内存:地址不限、次数不限、修改为堆;不可二次露
    能多次修改内存为堆值攻击选择很多,__就是一种选择,当然宽字符的板子也没问题。


    7修改内存:地址不限、一次、修改为堆;可二次露(不可能)
    同5


    8修改内存:地址不限、一次、修改为堆;不可二次露
    这种显然必须伪造IO,使用现有的、、魑魅魍魉、琴瑟琵琶等链进行攻击。


    、柳暗花明
    比较早学习的时候觉得杂项杂,工具多,不适合我,后来发现杂,语言、框架多,学习二进制觉得逆向杂,万物皆可以逆向,现在才发现,PWN你妹的比较杂,理论上就没有任何题目塞不到里面的。经过几年的卷路,PWN已经卷到每边了,出题人已经从简单的堆、栈、IO、内核题目,渐渐把逆向、密码、都融进来了,题目的内容是五花八门,没有非预期解根本做不出题目。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Archiver|山东001在线 ( ICP11027147 )

    GMT+8, 2026-4-4 17:06 , Processed in 0.043317 second(s), 19 queries , Gzip On.

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表