本人呢也是刚学习unlink机制不久,但是最近有一点事情,所以隔了好几天才开始写。这次还是主要围绕着题来写,当然是初探,所以有很多细致的地方还是不太懂的。

在堆内存管理机制中,’unlink’操作是指把一个双向链表中的空闲堆块取,然后和目前物理相邻的 free chunk 进行合并。

这只是它的概念,其实不一定非得物理相邻。

最简单的毫不严谨的表达我们利用unlink漏洞,就是

申请一个堆块A

申请一个堆块B(不能进入tcache或者fastbin,为了使)

申请一个堆块C(防止和C堆块前面的堆块释放的时候与topchunk合并)

咱们利用unlink漏洞的主要目的是我们在A块里面精心构造一个堆块(简称F堆块),并且在释放B堆块的时候会与还未释放的F堆块进行合并。