type
status
date
slug
tags
summary
category
icon
password
Unsorted Bin Leak
Unsorted Bin 的结构
Unsorted Bin 在管理时为循环双向链表,若 Unsorted Bin 中有两个 bin,那么该链表结构如下
由于双向链表的结构,free后再读取可以用来泄露 main_arena
(from wiki)如果我们可以把正确的 
fd 指针 leak 出来,就可以获得一个与 main_arena 有固定偏移的地址,这个偏移可以通过调试得出。而main_arena 是一个 struct malloc_state 类型的全局变量,是 ptmalloc 管理主分配区的唯一实例。说到全局变量,立马可以想到他会被分配在 .data 或者 .bss 等段上,那么如果我们有进程所使用的 libc 的 .so 文件的话,我们就可以获得 main_arena 与 libc 基地址的偏移,实现对 ASLR 的绕过。直接导入符号即可观察到
main_arena 地址以及泄露出来的偏移,就可以泄露libc
unsorted bin attack
在 glibc/malloc/malloc.c 中的
_int_malloc 有这么一段代码,当将一个 unsorted bin 取出的时候,会将 bck->fd 的位置写入本 Unsorted Bin 的位置。换而言之,如果我们控制了 bk 的值,我们就能将
unsorted_chunks (av) 写到任意地址。how2heap中如下:

- 作者:moyaoxue
- 链接:https://moyaoxue.de/article/15025ac9-6ea8-809f-890d-d86002bc4406
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

