Unsorted Bin Attack小记

Unsorted Bin Attack主要就两个应用:

  1. 泄露libc地址
  2. 任意地址写一个较大的值

在实际的题目中Unsorted Bin Attack一般只是我们整个攻击流程的一部分

那如何泄露libc地址呢?

在把一个堆块放进unsortedbin中后其fd和bk指针会写上main_arena再加一定偏移的值,ain_arena就在libc中,确定好偏移即可得到libc基地址,当然,这个要求是你能够将其show出来,如果没有uaf的话,可以molloc一个较小的堆块切割unsortedbin,其fd和bk的值依旧残留在申请出的chunk中,如果没有show功能的话,可能就要结合IO相关的利用泄露地址了

任意地址写一个较大的值有什么用?如何实现呢?

向任意地址写一个很大的值一般都是修改global_max_fast或者tcache max size,这样可以将更大大小的堆块放入fastbin/tcache中,一般都是限制堆块大小时使用。实现也很简单,只要我们能控制该bin的bk指针,将其改为target_addr-0x10即可,依旧借用ctf-wiki的图展示

 

快速块(fast bin)、小型块(small bin)、未排序块(unsorted bin)和大型块(large bin)是堆管理中不同的内存块分类。它们有一些区别和共同点,如下所示: 区别: 1. 大小范围:快速块是一组固定大小的小块,通常用于快速分配和释放小型对象;小型块是一组尺寸逐渐增大的内存块,用于中等大小的对象;未排序块是不同尺寸的内存块,用于中等和大型对象;大型块是较大的内存块,通常用于分配较大的对象。 2. 管理方式:快速块和小型块使用特定的数据结构(如双向链表或位图)来管理内存块;未排序块和大型块使用不同的数据结构(如双向链表)来管理内存块。 3. 分配策略:快速块通常通过简单的指针移动来分配和释放内存块,具有较低的开销;小型块和未排序块通常采用更复杂的算法来选择合适的内存块进行分配和释放;大型块通常通过系统调用来分配和释放内存。 共同点: 1. 都是用于管理堆中的内存块,以支持动态内存分配和释放操作。 2. 都涉及内存块的分配、释放和管理,以提高内存使用效率和减少碎片。 3. 都使用特定的数据结构来组织和管理内存块,以便快速查找可用的内存块。 这些块分类是堆管理中常见的策略,旨在根据对象的大小和使用模式来优化内存分配和释放的性能。具体的实现可能会因不同的堆管理算法而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值