Unsorted Bin Attack主要就两个应用:
- 泄露libc地址
- 任意地址写一个较大的值
在实际的题目中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的图展示