Hack the box-Diogenes Rage攻克思路
字数 1296 2025-08-12 11:34:05
Hack the Box - Diogenes Rage 靶机攻克教程
靶机概述
Diogenes Rage 是 Hack the Box 平台上的一个靶机,全球攻克人数为780人(截至2022年8月)。该靶机模拟了一个自动售货机系统,通过条件竞争漏洞实现优惠券的重复兑换,最终获取flag。
信息收集
-
网站功能分析:
- 模拟自动售货机界面
- 用户可以将纸币移动至投币口
- 根据左侧物品价格及代号,在右侧按键处输入代号购买商品
- 包含一个红色重置按钮
-
网络请求分析:
- 纸币投入时的请求
- 按键购买商品时的请求(
/api/purchase) - 点击红色按钮重置的请求
代码分析
1. 购买商品逻辑 (/api/purchase)
关键代码行为:
- 当用户未定义时(
user==undefined),会注册用户信息(包括用户名、优惠券金额为0等) - 当购买商品C8时,系统会读取
/app/flag文件并将内容展示在响应包中 - C8商品价格为$13.37
- 优惠券一次只能兑换一张,面值为$1
2. 优惠券兑换逻辑 (/api/coupons/apply)
漏洞点分析:
- 系统先检查优惠券是否已被使用(是否存在)
- 如果未使用,则兑换金币并更新用户数据库
- 条件竞争漏洞:如果在同一时间对同一张优惠券发起多个兑换请求,可以绕过"一次只能兑换一张"的限制
漏洞利用步骤
1. 获取个人session
首先需要获取有效的用户session,这是后续操作的基础。
2. 并发兑换优惠券
利用条件竞争漏洞并发兑换同一张优惠券:
- 使用工具(如Burp Suite)发送多个并发请求到
/api/coupons/apply - 由于竞争条件,系统可能会多次兑换同一张优惠券
- 示例中成功兑换了19张优惠券(价值$19)
3. 购买flag商品
使用积累的金币购买商品C8:
- 携带有效session发送购买C8的请求到
/api/purchase - 系统会返回包含flag的响应
实际操作指南
使用Burp Suite进行漏洞利用
-
拦截兑换请求:
- 正常操作兑换一张优惠券,用Burp拦截请求
- 将请求发送到Intruder模块
-
设置并发攻击:
- 在Intruder中选择"Pitchfork"或"Cluster bomb"攻击类型
- 设置高线程数(如50-100)
- 不需要修改任何参数,直接发起攻击
-
验证兑换结果:
- 检查账户余额是否增加了超过预期的金额
- 示例中获得了19美元而非预期的1美元
-
购买flag商品:
- 发送购买C8商品的请求
- 在响应中查找flag
注意事项
- 传统的多进程脚本方法可能不稳定,使用Burp Suite更可靠
- 并发请求的数量需要适当调整,过多可能导致服务器无响应
- 确保在每次尝试前重置系统状态(使用红色按钮)
- 保持session的一致性,所有请求需要使用同一个有效session
总结
Diogenes Rage靶机的核心漏洞是优惠券兑换处的条件竞争问题。通过精心设计的并发请求,可以绕过系统的一次性兑换限制,积累足够资金购买包含flag的高价商品。这种方法相比传统的多进程脚本更加稳定可靠。