# 【juice-shop】★★★★ Christmas Special：通过 SQL 注入订购已删除商品


# 【juice-shop】★★★★ Christmas Special：通过 SQL 注入订购已删除商品

## 任务简报

<blockquote style="border-left: 5px solid #ff6b6b; background-color: #ffe0e0; padding: 20px; margin: 1.5rem 0; color: #c92a2a; line-height: 1.8; border-radius: 0 5px 5px 0;">
<div style="font-weight: bold; font-size: 1.1rem; margin-bottom: 10px; display: flex; align-items: center;">
<span style="margin-right: 8px;">🎯</span> 挑战目标
</div>
订购 2014 年圣诞节特别优惠商品。
</blockquote>

<blockquote style="border-left: 5px solid #6f42c1; background-color: #f5f3ff; padding: 20px; margin: 1.5rem 0; color: #5521b5; line-height: 1.8; border-radius: 0 5px 5px 0;">
<div style="font-weight: bold; font-size: 1.1rem; margin-bottom: 10px; display: flex; align-items: center;">
<span style="margin-right: 8px;">💡</span> 官方提示 (Hints)
</div>
1. 了解应用程序如何处理不可用商品并试图找到漏洞。<br>
2. 了解该应用程序如何向客户隐藏已删除的产品。<br>
3. 尝试构造一条攻击字符串，使已删除的产品重新可见。<br>
4. 您需要将已删除的商品加入购物车并触发结账流程。<br>
5. 上述两种方式均无法通过应用程序前端实现，甚至可能需要采用（半）盲注 SQL 注入技术。
</blockquote>

---


## 实战：复现漏洞

### 步骤1：获取 SQL 注入 Payload

如果你已完成 **Database Schema** 挑战，可以直接使用该 Payload：

```sql
1'))--
```

**Payload 说明：**
- `1` - 闭合原始的 ID 参数
- `'))` - 闭合原始的 SQL 语句
- `--` - SQL 注释符，忽略后续代码

**如果未完成该挑战，可以通过以下方式构造：**

![SQL 注入示例](../../../../../../public/p/juice-shop-christmas-special通过-sql-注入订购已删除商品/assets/Pastedimage20260416162033.png)

### 步骤2：识别目标商品

访问应用的商品列表，寻找 2014 年圣诞节特别优惠商品。

**识别方法：**
- 使用搜索功能搜索 "Christmas"（中文用户搜索“圣诞”）
- 查看商品详情页面的 ID 号
- 记录目标商品的 ID（本例中为 ID: 10）

![目标商品](../../../../../../public/p/juice-shop-christmas-special通过-sql-注入订购已删除商品/assets/Pastedimage20260416162322.png)

### 步骤3：获取添加购物车的请求

1. 注册并登录一个账户
2. 将任意一个可用商品添加到购物车
3. 使用 Burp Suite 或浏览器开发者工具抓包
4. 找到添加购物车的 POST 请求

![添加购物车请求](../../../../../../public/p/juice-shop-christmas-special通过-sql-注入订购已删除商品/assets/Pastedimage20260416163656.png)


### 步骤4：注入 SQL 绕过

在 Burp Suite 的 Repeater 中修改请求，并发送

![修改请求](../../../../../../public/p/juice-shop-christmas-special通过-sql-注入订购已删除商品/assets/Pastedimage20260416173137.png)

### 步骤5：验证商品已添加到购物车

访问购物车页面，查看已删除的圣诞节商品是否成功添加。

![购物车验证](../../../../../../public/p/juice-shop-christmas-special通过-sql-注入订购已删除商品/assets/Pastedimage20260416173200.png)

### 步骤6：完成结账流程

1. 进入购物车
2. 点击"结账"按钮
3. 填写收货地址和支付信息
4. 提交订单（可以使用虚假的信用卡信息）

![完成订单](../../../../../../public/p/juice-shop-christmas-special通过-sql-注入订购已删除商品/assets/Pastedimage20260416173439.png)

**挑战完成！** 🎉

## 参考

- [OWASP Juice Shop 官方解决方案 - Christmas Special](https://pwning.owasp-juice.shop/companion-guide/latest/appendix/solutions.html#_order_the_christmas_special_offer_of_2014)


