学徒-特定领域的缺陷-业务规则的执行缺陷
# 实验室:业务规则的执行缺陷
# 题目
此实验室的 采购工作流程 存在逻辑缺陷。要解决实验室问题,请利用此缺陷购买一件 “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一个。
- ......