目录

【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):

{
    "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

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