Fastbin attack之alloc to stack

原理

从名字就知道和stack有关,其实fastbin attack的核心都在于利用chunk的fd指针。alloc-to-stack是把fd指针指向我们想要分配的栈上,从而实现 控制栈中的一些关键数据

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//gcc -g z1r06.c -o z1r06
#include<stdio.h>

typedef struct _chunk
{
long long pre_size;
long long size;
long long fd;
long long bk;
} CHUNK,*PCHUNK;

int main(void)
{
CHUNK stack_chunk;

void *chunk1;
void *chunk_a;

stack_chunk.size=0x21;
chunk1=malloc(0x10);

free(chunk1);

*(long long *)chunk1=&stack_chunk;
malloc(0x10);
chunk_a=malloc(0x10);
return 0;
}

创建了一个stack_chunk,将stack_chunk的size=0x21,分配了0x10给chunk1,释放了chunk1,将chunk1指向了stack_chunk,再次申请0x10,申请chunk_a。

22行下个断点

创建了一个堆,在24行下个断点吧,

继续n吧。*(long long *)chunk1=&stack_chunk;将fd指向了stack_chunk

连续申请两次,则0x7fffffddb0就会被申请走。

通过alloc-to-stack可以把fastbin分配到栈中。控制关键数据。同时栈中要有满足条件的size