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

通过篡改购物车请求,将商品数量设置为负数,使订单总额变为负数,从而获得退款而非支付。

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

0x01 任务简报

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


0x02 实战:复现漏洞

💡 前置思路

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

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


💰 第一步:充值钱包余额

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

充值页面

添加信用卡

充值确认

充值成功

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

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

购物车请求

请求体分析

📊 第三步:分析请求参数

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

  • ProductId — 商品 ID
  • BasketId — 购物车 ID
  • quantity数量(关键字段)

💉 第四步:篡改数量为负数

将请求发送到 Repeater,修改 quantity 字段为负数(如 -1):

1
2
3
4
5
{
    "ProductId": 1,
    "BasketId": 6,
    "quantity": -1
}

篡改数量

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

添加成功

💵 第五步:结账获利

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

负数订单

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

使用 Hugo 构建
主题 StackJimmy 设计