Use After Free 模式与案例分析

释放双眼,带上耳机,听听看~!

1. Use After Free的概念

Use After Free 就是其字面所表达的意思,当一个内存块被释放之后再次被使用。但是其实这里有以下几种情况:

(1)内存块被释放后,其对应的指针被设置为 NULL , 然后再次使用,自然程序会崩溃。

(2)内存块被释放后,其对应的指针没有被设置为 NULL ,然后在它下一次被使用之前,没有代码对这块内存块进行修改,那么程序很有可能可以正常运转。

(3)内存块被释放后,其对应的指针没有被设置为NULL,但是在它下一次使用之前,有代码对这块内存进行了修改,那么当程序再次使用这块内存时,就很有可能会出现奇怪的问题。

而我们一般所指的 Use After Free 漏洞主要是后两种。特别的,常见的double free 漏洞其实也是一种特殊的UAF,只不过是free之后的‘use’是再次‘free’。

2. UAF漏洞存在必备三步骤

(1)分配一个内存区并且让一个指针指向它。

(2)内存区被释放,但原来的指针仍然可用。

(3)使用该指针能访问先前释放的内存区。(这里的“访问”可以代表“写”也可以代表“读”)

3. UAF漏洞利用的模式

从UAF利用的目的来看,UAF漏洞的一般利用模式分为两种,一种是为了进行“信息泄露”,而另一种是为了进行“流程控制”。

(1)进行信息的主要步骤:

1)释放chunk

2)chunk的内存不能清空

3)指向该释放chunk 的指针不清空

4)有能够利用该指针打印内存的函数

(2)进行流程控制的主要步骤

1)释放chunk

2)指向该释放chunk 的指针不清空

3)有能够向该指针所指向内存进行写入的函数

4)具体的情况(有函数指针在chunk上,chunk大小恰好)

隐藏内容,您需要满足以下条件方可查看
End

执行的效果如下:

可以发现确实弹出来了计算器,说明利用成功!!!!!!!!!

[/content_hide]

数据安全漏洞

关于ES文件浏览器任意命令执行漏洞的分析和复现

2020-4-10 23:32:22

WEB安全公众号文章漏洞

DNS注入

2020-4-11 21:41:31

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
有新私信 私信列表
搜索