PWN知识点整理(2)UAF

您所在的位置:网站首页 uaf漏洞是什么 PWN知识点整理(2)UAF

PWN知识点整理(2)UAF

2024-06-11 01:43| 来源: 网络整理| 查看: 265

UAF 参考资料

堆漏洞-UAF漏洞简析 UAF (Use After Free)漏洞分析及利用 当申请的chunk被释放后还可以被使用

UAF介绍

UAF全称use after,其内容如名称,在free后再进行利用,UAF是堆结构漏洞的重要利用方式。

原理

UAF漏洞大部分都出现在使用一个指针P去申请一个指定大小的chunk,而当free指针P以后指针P并没有被置空(指向NULL),那么即使释放了这块内存,但是依旧可以对这块内存进行操作, 同时还有: 在free一块内存后,接着申请大小相同的一块内存,操作系统会将刚刚free掉的内存再次分配。 这得谈谈堆分配回收机制: 应用程序调用free()释放内存时,如果内存块小于256kb,dlmalloc并不马上将内存块释放回内存,而是将内存块标记为空闲状态。这么做的原因有两个:一是内存块不一定能马上释放会内核(比如内存块不是位于堆顶端),二是供应用程序下次申请内存使用(这是主要原因)。当dlmalloc中空闲内存量达到一定值时dlmalloc才将空闲内存释放会内核。如果应用程序申请的内存大于256kb,dlmalloc调用mmap()向内核申请一块内存,返回返还给应用程序使用。如果应用程序释放的内存大于256kb,dlmalloc马上调用munmap()释放内存。dlmalloc不会缓存大于256kb的内存块,因为这样的内存块太大了,最好不要长期占用这么大的内存资源。

漏洞 (1)内存块被释放后,其对应的指针被设置为NULL,然后再次被使用,自然程序会崩溃。 (2)内存块被释放后,其对应的指针没有被设置为NULL,然后在它下次被使用之前,没有代码对这块内存进行修改,那么程序很可能可以正常运转 (3)内存块被释放后,其对应的指针没有被设置为 NULL,但是在它下一次使用之前,有代码对这块内存进行了修改,那么当程序再次使用这块内存时,就很有可能会出现奇怪的问题。迷途指针 迷途指针或称为悬空指针,野指针,指的的是不指向任何合法的对象的指针当所指向的对象被释放或收回,但是对该指针没有作任何的修改,以至于该真正仍旧指向已经回收的内存地址,此情况下该指针便称为迷途指针。若操作系统将这部分已经释放的内存重新分配给另一个进程,而原来的程序重新引用现在的迷途指针,则会产生无法预料的后果。因为此时迷途指针所指向的内存现在包含的已经完全是不同的数据。通常来说,若原来的程序继续往迷途指针所指向的内存地址写入数据,这些和原来程序不相关的数据将被损坏,进而导致不可预料的程序错误。这种类型的程序错误,不容易找到问题的原因,通常会导致存储器区块错误(Linux系统中)和一般保护错误(Windows系统中)。如果操作系统的内存分配器将已经被覆盖的数据区域再分配,就可能会影响系统的稳定性。


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3