【逆向学习记录】堆漏洞利用之Unlink

本文详细介绍了堆漏洞中的Unlink操作,包括正常unlink的过程、利用过程及其检查。通过实例分析,阐述了如何在unlink后修改Free GOT表的值,并探讨了新版本libc的额外检查以及如何绕过这些检查。文章最后提到了Unlink在实际CTF挑战中的应用案例。
摘要由CSDN通过智能技术生成

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 设
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值