fastbin 利用小结之fastbin double free, house of spirit
1、fastbin chunk 结构
未分配的chunk
| | size |
| fd | |
已分配chunk
| | size |
| content |
……
malloc返回的指针指向content位置
2、Fastbin Double Free
Fastbin Double Free 是指 fastbin 的 chunk 可以被多次释放,伪造一个假的fastbin链表,根据malloc规则,再次申请同样大小的内存时会从fastbin中获取。而该链表是被伪造过的,可申请得到任意地址,实现任意地址写。
以以下例子为例
typedef struct _chunk
{
long long pre_size;
long long size;
long long fd;
long long bk;
} CHUNK,*PCHUNK;
CHUNK bss_chunk;//一个全局的伪造的chunk
int main(void)
{
void *chunk1,*chunk2,*chunk3;
void *chunk_a,*chunk_b;
1、fastbin chunk 结构
未分配的chunk
| | size |
| fd | |
已分配chunk
| | size |
| content |
……
malloc返回的指针指向content位置
2、Fastbin Double Free
Fastbin Double Free 是指 fastbin 的 chunk 可以被多次释放,伪造一个假的fastbin链表,根据malloc规则,再次申请同样大小的内存时会从fastbin中获取。而该链表是被伪造过的,可申请得到任意地址,实现任意地址写。
以以下例子为例
typedef struct _chunk
{
long long pre_size;
long long size;
long long fd;
long long bk;
} CHUNK,*PCHUNK;
CHUNK bss_chunk;//一个全局的伪造的chunk
int main(void)
{
void *chunk1,*chunk2,*chunk3;
void *chunk_a,*chunk_b;