学徒-特定领域的缺陷-业务规则的执行缺陷
# 实验室:业务规则的执行缺陷
# 题目
此实验室的 采购工作流程 存在逻辑缺陷。要解决实验室问题,请利用此缺陷购买一件 “Lightweight l33t leather jacket” 。
你可以使用以下凭据登录到自己的帐户:wiener
:peter
- name: 实验室-学徒
desc: 业务规则的执行缺陷 >>
avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
link: https://portswigger.net/web-security/logic-flaws/examples/lab-logic-flaws-flawed-enforcement-of-business-rules
bgColor: '#001350'
textColor: '#39d50c'
2
3
4
5
6
# 实操
根据题意,可得实验目标:
- 该实验室的 采购流程 中存在逻辑缺陷,利用该缺陷购买一件名为 “Lightweight l33t leather jacket” 的商品。
点击 “ACCESS THE LAB” 进入实验室。

在首页中可以看到很多商品,其中有我们需要的 “Lightweight l33t leather jacket” 。
页面上方有一段绿色的文字,为新客户提供了一个优惠券NEWCUST5
。
点击 “My account” 转到登录页面。

输入题目中提供的用户名和密码,登录相应账户。

回到首页,点击商品下方的 “View details” 进入详情页。

点击页面下方的 “Add to cart” 添加一个商品到购物车。

点击购物车图标进入购物车界面。

启用浏览器代理,输入优惠券代码NEWCUST5
并点击 “Apply” 。

5 元的优惠券...

这是使用优惠券时 产生的请求数据包。

同一张优惠券无法重复使用。

然后我在这卡了好久,一直在想怎么绕,能试的都试了一遍。
然后看了答案,被自己蠢哭。
将页面拉到最下方,有个订阅功能,输入任意邮箱 并点击 “Sign up” 提交表单。

然后,你将会获得第二个优惠券代码SIGNUP30
...第二个优惠券...第二个...第二...二...
原来有两个优惠券,我说呢,还以为是我技术不行,原来是脑袋不行...

在购物车界面,输入第一个优惠券代码,再输入第二个优惠券代码。
NEWCUST5
SIGNUP30
2

此时,当SIGNUP30
被使用之后,再次使用第一个优惠券NEWCUST5
。

你会发现使用成功...
同一个优惠券不能使用 2 次,但可以用两个不同的优惠券交错使用!

就这样,一下NEWCUST5
,再一下SIGNUP30
,再一下NEWCUST5
......
最后总价格被 “优惠” 到了 0 元,点击 “Place order” 提交订单。

购买成功,实验完成。

# 修复建议
支付漏洞5 - 两个优惠券叠加复用
- 旧:当前优惠券代码 与 上一个优惠券代码 不一样,可以使用。
- 新:当前优惠券代码 在 购物车状态中 不存在,可以使用。
A、B、C、D 四人分金币,由 A 来分:
- A:我一个,B一个。
- A:我一个,C一个。
- A:我一个,D一个。
- A:我一个,B一个。
- ......