【学习记录】Week12(一):House of Botcake——glibc 2.29+ 时代的堆重叠王者
写在前面在 glibc 2.29 版本中官方为 Tcache 引入了key字段用于检测并阻止经典的 Double Free 攻击。这一改动曾让许多习惯于利用 Tcache Double Free 制造堆重叠的选手极不适应。然而攻防博弈从未停止House of Botcake应运而生。它巧妙地利用了 Tcache 与 Unsorted Bin 之间的状态差异在不破坏任何校验机制的前提下完美实现了 Double Free 并制造堆重叠成为了现代 CTF (glibc 2.29 ~ 2.35) 必考的“基础设施”级技术。 目录背景回顾Tcache Key 机制与 Double Free 的困局核心破局House of Botcake 的状态错位思想详细的堆布局与利用流程推演实战进阶结合 Safe-Linking 的完整利用链总结与下篇预告1. 背景回顾Tcache Key 机制与 Double Free 的困局在 glibc 2.27 中Tcache 没有任何 Double Free 检查攻击者可以连续两次free同一个 chunk使其在 Tcache 链表中形成环A - A随后两次malloc即可实现任意地址写。为了修补这个漏洞glibc 2.29 在tcache_entry结构体中新增了key字段typedef struct tcache_entry { struct tcache_entry *next; struct tcache_perthread_struct *key; // 新增字段 } tcache_entry;当一个 chunk 被放入 Tcache 时堆管理器会在key字段写入一个特定的值当前 Tcache 结构体的地址。在执行free时如果发现该 chunk 的key等于这个特定值就会遍历当前的 Tcache 链表检查是否已存在该 chunk如果存在则触发free(): double free detected in tcache 2报错。这一机制直接封死了在 Tcache 中的直接 Double Free。2. 核心破局House of Botcake 的状态错位思想House of Botcake 的核心思想非常精妙如果一个 chunk 不在 Tcache 里而在 Unsorted Bin 里那么它的key字段就没有被设置。此时我们再次free它它就会顺利进入 Tcache这样一来这个 chunk 就同时存在于 Unsorted Bin双向链表和 Tcache单链表中。在 Unsorted Bin 中它的fd和bk指针指向main_arena中的地址我们可以利用这一点泄露 Libc 基址。在 Tcache 中我们可以通过 UAF 修改它的next指针实现Tcache Poisoning进而申请到任意地址。这就是 House of Botcake 的本质利用不同 Bin 机制的盲区实现状态的“双栖”。3. 详细的堆布局与利用流程推演假设题目环境为 glibc 2.31存在 UAF 漏洞且我们目标是利用大小为0x100的 chunk 制造重叠。步骤一填满 Tcache 并送入 Unsorted Bin分配 9 个大小为0x100的 chunkA, B, C, D, E, F, G, H, I。I用于防止后续释放时与 Top Chunk 合并。依次释放A到G。此时 Tcache[0x100]被填满7个。释放H。因为 Tcache 已满H进入Unsorted Bin。此时H的fd和bk指向main_arena96。关键点H的key字段没有被设置步骤二清空 Tcache 制造错位连续调用 7 次malloc(0xf8)将 Tcache[0x100]清空。再次释放G。此时 Tcache[0x100] 为空G顺利进入Tcache。步骤三触发 Double Free核心操作再次释放H。glibc 检查H的key字段发现它并不等于 Tcache 结构体地址因为它之前进的是 Unsorted Bin。检查通过H被放入Tcache。此时H同时存在于 Unsorted Bin 和 Tcache 中Tcache 链表状态head - H - G - NULL步骤四信息泄露与投毒泄露 Libc利用 UAF 漏洞读取H的fd指针。由于H同时在 Unsorted Bin它的fd指针存储着main_arena的地址。成功计算出 Libc 基址。Tcache Poisoning计算目标地址如__free_hook。利用 UAF 向H写入数据覆盖其在 Tcache 中的next指针为target_addr。*(注如果 glibc 2.32需结合 Safe-Linking 机制用泄露的堆地址异或目标地址)*。步骤五分配获取目标地址malloc(0xf8)- 返回H。malloc(0xf8)- 返回G。malloc(0xf8)-返回target_addr实现任意地址写。1. 填满 Tcache, 释放 H 进 Unsorted BinH 无 key2. 清空 Tcache3. 释放 G 进 Tcache4. 再次释放 H绕过 key 检查, H 进 Tcache5. H 同时在 Tcache 和 Unsorted Bin6. UAF 读 H 的 fd泄露 Libc7. UAF 写 H 的 next 指针实施 Tcache Poisoning8. 连续 Malloc 取出 H 和目标地址4. 实战进阶结合 Safe-Linking 的完整利用链在 glibc 2.32 环境中Tcache 引入了 Safe-Linking 机制next指针变成了(chunk_addr 12) ^ next_ptr。House of Botcake 如何与之适配泄露堆地址在步骤 4 中当我们向 Tcache 释放G时H此时还在 Unsorted Bin的fd指针被改写为 Tcache 加密后的G的地址。通过 UAF 读取这个值由于此时H是链表头next_ptr为 0所以加密后的值就是(H_addr 12) ^ 0 H_addr 12。我们成功泄露了堆地址的 key加密目标地址在步骤 8 中我们写入的next不能再是裸的target_addr而必须是(H_addr 12) ^ target_addr。由此可见House of Botcake 不仅能泄露 Libc还能顺带泄露堆地址简直是专为绕过现代防护量身定制的利器。5. 总结与下篇预告5.1 核心知识点总结本质利用 Unsorted Bin 中的 chunk 缺失 Tcachekey字段的特性进行跨 Bin 的 Double Free。效果让一个 chunk 同时存在于 Tcache 和 Unsorted Bin实现 Libc 泄露与 Tcache Poisoning 的双管齐下。地位在 glibc 2.29 环境中只要存在 UAF 且无其他严苛限制House of Botcake 几乎是制造堆重叠的首选方案。5.2 下篇预告在掌握了 House of Botcake 制造重叠和泄露的能力后下一篇我们将迎来本周的重头戏之一1.5天重点House of Pig。在 glibc 2.34 移除__free_hook等传统劫持点后House of Pig 将教我们如何将 Tcache Poisoning 与 IO_FILE (FSOP) 完美结合在失去 Hook 的时代依然能稳定 Getshell。结语House of Botcake 完美诠释了“魔高一尺道高一丈”的另一面——防御机制的缝隙总是存在的。掌握它你就拿到了通往现代堆利用大门的钥匙。

相关新闻

Windows EFS加密文件重装系统后恢复全攻略:原理、场景与实操

Windows EFS加密文件重装系统后恢复全攻略:原理、场景与实操

1. 项目概述:当加密文件遇上重装系统 如果你曾经在Windows系统上使用过“加密内容以便保护数据”这个功能,并且后来因为系统卡顿、中毒或者更换硬盘而重装了系统,那么你很可能已经遭遇过这个令人头皮发麻的场景:那些带着黄色小锁标…

2026/7/5 13:42:30阅读更多 →
2026-07-04:找到第一个唯一偶数。用go语言,在数组 nums 中寻找这样的数:它是偶数(能被 2 整除),并且在 nums 里只出现一次。请返回满足条件的那个偶数的值,并且以其在数组中的首次

2026-07-04:找到第一个唯一偶数。用go语言,在数组 nums 中寻找这样的数:它是偶数(能被 2 整除),并且在 nums 里只出现一次。请返回满足条件的那个偶数的值,并且以其在数组中的首次

2026-07-04:找到第一个唯一偶数。用go语言,在数组 nums 中寻找这样的数:它是偶数(能被 2 整除),并且在 nums 里只出现一次。请返回满足条件的那个偶数的值,并且以其在数组中的首次出现位置最靠前…

2026/7/5 13:42:30阅读更多 →
【学习记录】Week11(三):House of Botcake 与 House of Pig——现代 CTF 堆利用的双子星

【学习记录】Week11(三):House of Botcake 与 House of Pig——现代 CTF 堆利用的双子星

写在前面:在 Week11 的前两篇中,我们复盘了传统的 House of 系列(Spirit, Force, Lore, Einherjar, Rabbit, Orange)。随着 glibc 版本的迭代,传统的技术或被修补,或难以适配现代环境。今天,我们…

2026/7/5 13:42:30阅读更多 →
新e选烤火罩最后提醒:选烤火罩的3个关键动作

新e选烤火罩最后提醒:选烤火罩的3个关键动作

总结一下,买烤火罩别只看价格,核心看3点:有没有正规环保检测报告、面料工艺是不是锁色防水、生产厂家是不是专业品牌。新e选烤火罩在这3点上都达标,而且用户反馈的耐用性很强,正常使用能维持3-5年,算下来每…

2026/7/5 14:32:34阅读更多 →
Si4732与PIC18F97J94数字广播接收方案设计与优化

Si4732与PIC18F97J94数字广播接收方案设计与优化

1. 为什么选择Si4732与PIC18F97J94这对黄金组合 在数字广播接收领域,芯片选型直接决定了终端产品的音质上限。Si4732这颗来自Silicon Labs的DSP数字调谐器芯片,凭借其全频段覆盖(AM/FM/SW/LW)和高达114dB的信噪比,成为…

2026/7/5 14:32:34阅读更多 →
TVA与具身智能的结构性关联(10)

TVA与具身智能的结构性关联(10)

前沿技术介绍:AI智能体视觉(TVA,Transformer-based Vision Agent)是依托Transformer架构与“因式智能体”理论所构建的颠覆性工业视觉技术,属于“物理AI” 领域的一种全新技术形态,完成了从“虚拟世界”到“…

2026/7/5 14:32:34阅读更多 →
PG 日报|PG20 计划移除老旧 contrib 模块

PG 日报|PG20 计划移除老旧 contrib 模块

⚙️ PostgreSQL技术文章 🧩 pgtt v4.5版本发布pgtt v4.5 作为维护版本正式发布。pgtt 是一个 PostgreSQL 扩展,用于实现 DB2 和 Oracle 风格的全局临时表(Global Temporary Tables)。此版本新增了对 PostgreSQL 19 的支持&#x…

2026/7/5 14:32:34阅读更多 →
LTC6904与PIC18LF24K50构建高精度方波发生器方案

LTC6904与PIC18LF24K50构建高精度方波发生器方案

1. 项目背景与核心价值在嵌入式系统开发中,精确的方波信号就像精密机械中的齿轮——它决定了整个系统的时序基准和运行节奏。LTC6904这颗低功耗可编程振荡器芯片,配合PIC18LF24K50这款经典8位MCU,能够构建出频率精度达0.5%的方波发生器。这种…

2026/7/5 14:32:34阅读更多 →
把 TeXstudio / LaTeX 工程交给 AI:texstudio-mcp 功能详解

把 TeXstudio / LaTeX 工程交给 AI:texstudio-mcp 功能详解

.tex、跑编译、看日志,而不是只会泛泛而谈,那么需要一个专门面向 LaTeX 工作流的 MCP 服务。texstudio-mcp 就是这样一层桥:它在你的工程目录(workspace_root)里安全地读写文件,按需调用本机已安装的 TeX 工…

2026/7/5 14:27:33阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/5 0:01:08阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/5 0:01:08阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/5 0:01:08阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/5 0:01:08阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/5 0:01:08阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/5 0:01:08阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/5 1:30:27阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/5 3:48:10阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/5 3:48:09阅读更多 →