堆漏洞利用方法整理
Thu May 01 2025 14:56:19 GMT+0800
参考文献
Fastbin利用
名称 | 利用步骤 |
---|---|
Fastbin Dup # Glibc 2.39 |
|
Tcache利用
名称 | 利用步骤 |
---|---|
Small/Large Bin利用
名称 | 利用步骤 |
---|---|
House of 系列
名称 | 利用步骤 |
---|---|
House of Apple1 | |
House of Apple2 | |
House of Botcake # Glibc 2.39 |
Step 1:分配出9个Size相同且大于0x80的 Chunk(可能需要多一个使其与Top Chunk分隔开) Step 2:释放7个Chunk,填满对应的Tcache Bin Step 3:释放第8个Chunk(Chunk A),进入Unosrted Bin Step 4:释放第9个Chunk(Chunk B),将会引发Chunk A与Chunk B合并 Step 5:从该大小的Tcache Bin中分配出1个Chunk,给Double Chun B让位 Step 6:再次释放Chunk B,进入Tcache Finish:此时Chunk B同时存在于Unsorted Bin与Tcache中 |
House of Einherjar | |
House of Force | |
House of Gods | |
House of Lore | |
House of Mind Fastbin | |
House of Orange # Glibc 2.23 # 无free()函数 |
Step 1:堆溢出修改Top Chunk的Size为较小值 Step 2:创建一个Size大于Top Chunk的Size的空间,这样Top Chunk就会被Free进Unsorted Bin Step 3:堆溢出修改这个Unsorted Bin的内容: (1) 写入 /bin/sh\x00 (2) 修改 Unsorted Bin的大小为0x60(也可以为其他值,但是要找得到位置) (3) Unsorted Bin的bk指针为 _IO_list_all-0x10 (??)(4) 构造合理的 IO_FILE 结构通过判断(5) 构造vtable,写入想要执行的函数 Step 4:分配这个Unsorteed Bin |
House of Roman | |
House of Spirit | |
House of Storm | |
House of Tangerine | |
House of Water |