最近在研究一些堆上面的漏洞。然后某一天骑自行车在路上跑的时候我突然悟出了Double Free的真谛。
2333好像太中二了一点,我是根据堆溢出的利用方法启发,再结合linux中libc的源码。研究出了double free的利用方法。虽然有关double free的利用技巧已经不是一个秘密。不过好像很少有相关的中文的介绍,所以以一个初学者的角度来讲解一下double free漏洞的利用方法。
如果有错误,希望大家批评指正。Orz
简介
Double Free其实就是同一个指针free两次。虽然一般把它叫做double free。其实只要是free一个指向堆内存的指针都有可能产生可以利用的漏洞
double free的原理其实和堆溢出的原理差不多,都是通过unlink这个双向链表删除的宏来利用的。只是double free需要由自己来伪造整个chunk并且欺骗操作系统。
这里是glibc中有关内存管理的源代码
+ malloc.c
内存管理介绍
有关内存管理的部分我放在另外的一篇博客上。
这篇文章首发于乌云知识库。现在我将它发到自己的博客上,我只在这2个地方发过此文章。
转载求写个出处Orz
漏洞的原理
要利用Double Free的漏洞。我