1 概述
前面虽然学习了堆的chunk及调试了部分简单的案例,了解chunk的结构,但是针对堆的漏洞利用,还需要一个完整的实践来进一步的验证
参考:
ctf pwn中的unlink exploit堆利用
CTF-wifi–unlink
Linux堆溢出漏洞利用之unlink
2 Unlink操作
2.1 正常unlink的过程
P->fd->bk = P->bk.
P->bk->fd = P->fd.
2.2 利用过程
在ctf-wiki存在这么一句话,我开始的时候,思考了半天,也不知道什么意思,后来在这篇文章中发现一点蛛丝马迹Linux堆溢出漏洞利用之unlink,这篇文章中,有个free的图表,非常清晰
那么 unlink 具体执行的效果是什么样子呢?我们可以来分析一下
FD=P->fd = target addr -12
BK=P->bk = expect value
FD->bk = BK,即 *(target addr-12+12)=BK=expect value
BK->fd = FD,即 *(expect value +8) = FD = target addr-12
看起来我们似乎可以通过 unlink 直接实现任意地址读写的目的,但是我们还是需要确保 expect value +8 地址具有可写的权限。
比如说我们将 target addr 设