unleak利用

不基于信息泄露的堆利用方法

首先,假设可以申请任意长度的堆块,并且存在漏洞,申请后的堆块可以使用。

我们通过漏洞制造fastbin中的堆块与unsortbin中的堆块重合。(可以用roman)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
fastbins
0x20: 0 ◂— 0x10
0x30: 0 ◂— 0x10
0x40: 0 ◂— 0x10
0x50: 0 ◂— 0x10
0x60: 0 ◂— 0x10
0x70: 0x5866c0 —▸ 0 ◂— 0x10
0x80: 0 ◂— 0x10
unsortedbin
all: 0x586530 ◂— 0x7f7eb0d07b58
smallbins
empty
largebins
empty

然后申请堆块,使得unsortedbin与fastbins重合,导致fastbin的指针指向main_arena,

接着,通过局部覆盖使得fastbin指向malloc_hook前面

然后设置malloc_hook大小,然后通过unsortbin attach 狙击main_arena,然后改变大小