# 【juice-shop】★★★ Payback Time：通过负数数量获利


# 【juice-shop】★★★ Payback Time：通过负数数量获利

## 0x01 任务简报

提交一个让你变得更富有的订单。

---

## 0x02 实战：复现漏洞

💡 前置思路

1. 让商品单价在结算的时候变成负数
2. 让商品数量在结算的时候变成负数

这会导致订单总额为负，系统反向扣款，用户反而获得金额。

---

### 💰 第一步：充值钱包余额

首先，从不存在的信用卡搞点钱

![充值页面](../../../../../../public/p/juice-shop-payback-time通过负数数量获利/assets/Pastedimage20260409134502.png)

![添加信用卡](../../../../../../public/p/juice-shop-payback-time通过负数数量获利/assets/Pastedimage20260409134527.png)

![充值确认](../../../../../../public/p/juice-shop-payback-time通过负数数量获利/assets/Pastedimage20260409134612.png)

![充值成功](../../../../../../public/p/juice-shop-payback-time通过负数数量获利/assets/Pastedimage20260409134630.png)

### 🛒 第二步：正常购买一次商品

添加商品到购物车，进行一次正常的购买流程，捕获请求包。

![购物车请求](../../../../../../public/p/juice-shop-payback-time通过负数数量获利/assets/Pastedimage20260409143216.png)

![请求体分析](../../../../../../public/p/juice-shop-payback-time通过负数数量获利/assets/Pastedimage20260409143227.png)

### 📊 第三步：分析请求参数

观察请求体中的关键参数：

- `ProductId` — 商品 ID
- `BasketId` — 购物车 ID
- `quantity` — **数量**（关键字段）

### 💉 第四步：篡改数量为负数

将请求发送到 Repeater，修改 `quantity` 字段为负数（如 `-1`）：

```json
{
    "ProductId": 1,
    "BasketId": 6,
    "quantity": -1
}
```

![篡改数量](../../../../../../public/p/juice-shop-payback-time通过负数数量获利/assets/Pastedimage20260409143425.png)

发送请求，成功在购物车中添加负数数量的商品。

![添加成功](../../../../../../public/p/juice-shop-payback-time通过负数数量获利/assets/Pastedimage20260409143432.png)

### 💵 第五步：结账获利

查看购物车，订单总额已变为负数。

![负数订单](../../../../../../public/p/juice-shop-payback-time通过负数数量获利/assets/Pastedimage20260409143510.png)

进行结账，系统反向扣款，账户余额增加，挑战完成。

