简介
这次来介绍一下堆溢出漏洞。不过这次的堆溢出漏洞比较复杂,不像栈溢出一样容易理解。所以这一次的内容会比较多。我尽量详细的介绍堆溢出漏洞,以及相关的知识。
首先,关于神马是堆溢出。简而言之就是在堆上产生的溢出。一般我们使用malloc等函数申请的内存都会储存在堆段上。并且由操作系统来管理已经使用和剩余内存,完成内存分配以及回收等等的操作。而堆溢出便是因为程序员的粗心大意,造成了读入的数据超过了malloc申请的内存大小而产生的漏洞。
前提知识
要了解堆溢出到底是如何造成危害的,就需要对linux下的内存管理有一定的了解。因为内存管理比较复杂,所以这里另开一坑对漏洞利用有关的部分进行浅析。如果是了解内存管理的大神可以跳过。
传送门
然后需要了解的是漏洞利用中一种技巧,Dword shoot的使用方法,这个也开一个坑另行介绍。同样如果是了解Dword shoot或者说是双向链表溢出利用的大神可以跳过
传送门
漏洞利用介绍
如果已经基本了解了linux操作系统中内存管理的方式,并且清楚Dword shoot的利用方法。那么接下来我们就要具体的介绍堆溢出漏洞的产生原因以及利用的方法了。
我们已经知道,内存中空闲的堆快会通过一个双向链表连接在一起。而我们能够篡改内存的机会便是在双向链表的节点在删除的时候因为溢出而产生的Dword shoot。而我们需要的便是构造堆内存,篡