白帽江湖实战靶场实战SRC逻辑漏洞-该死的商城黑客
靶场地址:https://www.baimaojianghu.com/range/5
✅ 通关成功!Flag 已获取
Flag: flag{aes_s1gn_byp4ss_int32_0verfl0w}
关卡分析
这关相比第一关升级了保护机制,但仍然存在致命漏洞。
🔐 加密机制概览
| 组件 | 详情 |
|---|---|
| 加密算法 | AES-128-CBC |
| 密钥 | cMaLl_E1iT3_2024(硬编码前端 JS) |
| IV | R4nd0m_IV_CbC_16(硬编码前端 JS) |
| 签名方式 | 参数按 key 排序 → 拼接 k=v → AES-128-CBC 加密 → Base64 输出 |
🧠 攻击链分析
第一层防御:价格校验 ✅
- 服务端验证了
price是否与数据库真实价格一致 - 所以直接改 price 为 0 会被拦截
第二层防御(缺失):整数溢出 ❌
- 服务端用
total = price × quantity计算总价 - 未校验 quantity × price 是否会溢出 32 位有符号整数
int32最大值 =2,147,483,64712990 × 999 = 129,999,987,020,100→ 溢出为-1,481,480,636
攻击步骤:
1. 获取密钥和 IV(前端 JS → _enc_fallback 配置)
2. 构造请求:price=12990(正确价格通过校验),quantity=999(超大数量触发溢出)
3. 用泄露的密钥重新加密 token
4. 提交→ total 溢出为负值→余额不减反增→通关!
💰 数值演示
| 项 | 正常值 | 攻击值 |
|---|---|---|
| 单价 | ¥12,999.00 | ¥12,999.00 |
| 数量 | 1 | 99,999,999 |
| 应有总价 | ¥12,999.00 | ≈¥1,299,999,870,201 |
| 实际总价(溢出后) | ¥12,999.00 | -¥14,814,806.36 |
| 余额变化 | -¥12,999.00 | +¥14,814,806.36 |
修复建议
- 使用大整数类型:在服务端用
BigInt/long long或任意精度计算总价 - 校验 quantity 上限:设置合理的最大购买数量阈值(如 ≤ 100)
- 不要信任客户端:价格、总价都应服务端根据商品 ID 从数据库获取后计算
- 密钥仅存服务端:不要将密钥硬编码在前端 JS 中
温馨提示:本文内容仅用于合法授权的安全学习与研究交流,严禁用于未授权渗透测试、漏洞利用或任何违法行为。
涉及企业或平台的未公开漏洞信息,请遵循负责任披露原则,勿公开传播可直接复现的敏感细节。
如存在侵权、错误信息或不当内容,请联系站方处理,我们将及时核实并删除。邮箱:admin@baimaojianghu.com。
