堆漏洞利用方法整理

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