堆溢出 FastBin AttackUnsorted AttackLargebin Attack

在CTF(Capture The Flag)竞赛中,堆溢出攻击是常见的一类挑战,其中Fastbin、Unsorted Bin和Largebin攻击是针对glibc(GNU C Library)堆管理器的特定漏洞利用技术。以下是关于这些技术的概述:

Fastbin Attack

Fastbins是glibc heap manager中用于存储小块(小于0x50字节)内存的一种特殊双链表结构。Fastbin攻击利用了fastbin的特性,即fastbin中的自由块不经过合并,而是直接被添加到对应的fastbin链表中。这种行为可以被恶意地操纵,导致在申请相同大小的内存块时,攻击者能够控制分配的内存位置,从而覆盖特定的指针或数据。

攻击步骤:
  1. 分配和释放:首先,分配一系列小块内存,然后释放它们,使它们落入同一个fastbin中。
  2. 重用漏洞:再次分配相同大小的内存时,由于fastbin的特性,分配的内存可能正好是之前释放的块。
  3. 数据注入:在释放和重新分配的过程中,攻击者可以通过精心构造的数据来覆盖某些指针或重要数据,从而实现对程序的控制。

Unsorted Bin Attack

Unsorted bin是glibc heap manager中用于存放大小超过一定阈值但又不足以放入largebin的块的链表。unsorted bin攻击通常发生在释放一个较大的内存块之后,如果攻击者能够控制这个块的前驱和后继指针,就有可能操纵堆结构,进而控制程序的执行流程。

攻击步骤:
  1. 分配大块内存:分配一块足够大的内存,使其进入unsorted bin。
  2. 释放和重用:释放这块内存,然后尝试通过某种方式重用这块内存,同时控制其前驱和后继指针指向的位置。
  3. 数据注入和控制:通过控制指针,攻击者可以指向任意内存位置,甚至指向程序的关键部分,如全局变量或函数指针。

Largebin Attack

Largebin用于管理大于128KB的内存块。大型块的管理较为复杂,因为它们不会被合并,且分配和释放时的检查更为严格。然而,通过精细的内存管理控制,攻击者仍然可以利用大型块的分配和释放过程中的缺陷。

攻击步骤:
  1. 分配和释放:与上述攻击类似,首先分配和释放大块内存。
  2. 利用缺陷:利用glibc堆管理器在处理大型块时的某些缺陷或不一致性,如double free漏洞。
  3. 控制堆:通过控制大型块的分配和释放顺序,攻击者可以影响堆的布局,最终达到控制程序的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无极921

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值