Lab: Low-level logic flaw:低级逻辑缺陷

靶场内容

本实验未充分验证用户输入。您可以利用其采购工作流程中的逻辑缺陷以意外价格购买商品。解决实验室,买一件 "Lightweight l33t leather jacket".

您可以使用以下凭据登录自己的帐户: wiener:peter

漏洞解析

  • 这个漏洞依然存在一个逻辑缺陷
  • 但是这次把商品的数量修改成负数是没用的,还是会显示为0,所以商品数量篡改为负数的方法,行不通
  • 我们知道,int整数的范围是-231~231,这是个漏洞,一旦数值到达了2,147,483,647,就会回到--2,147,483,647。
  • 利用这个漏洞,可以有效地让价格变成负数,那么要怎么样测试呢?
  • 运行 Burp,登录并尝试购买皮夹克。订单被拒绝,因为您没有足够的钱。
  • 在proxy中,研究订单流程。将POST /cart请求发送到 Burp Repeater。
  • 在 Burp Repeater 中,请注意,你只能为每个请求添加两位数的数量,也就是最大为99。
  • 将请求发送给 Burp Intruder。
  • 在“position”选项卡上,清除所有默认payload位置并将quantity参数设置为99。
  • 在“payload”选项卡上,选择有效载荷类型“Null payloads”。在“Payload options”下,选择“Continue indefinitely”。开始攻击。
  • 在攻击进行时,去你的购物车。经常刷新页面并观察总价的变化。
  • 最终,请注意价格突然切换到一个大的负整数并开始向 0 计数。价格已超过后端编程语言中允许的整数最大值 (2,147,483,647)。该值已循环回最小可能值 (-2,147,483,647)。
  • 清空你的购物车。在接下来的几个步骤中,我们将尝试添加足够的单位(就是报答案了),以便价格在 0 美元和 100 美元之间循环回落。仅使用皮夹克在数学上是不可能的。
  • 再次创建相同的Intruder,但这一次,在“payloads”>“Payload options”下,选择生成准确的323有效载荷。
  • 转到“source pool”选项卡,并将攻击添加到“Maximum concurrent requests”设置为1。开始攻击。(漫长)
  • 当 Intruder 攻击完成后,转到POST /cartBurp Repeater 中的请求并发送一个47个夹克的请求。订单的总价现在应该是-$1221.96。
  • 使用 Burp Repeater 将合适数量的另一件商品添加到您的购物车,使总金额介于 0 美元到 100 美元之间。
  • 购买就可以解决靶场了
  • 此外,如果数据不正确到达了正数,可以点击减少按钮,然后抓取那个减少商品的包,对其进行修改,让它变成负数

关键截图

image
image

posted @ 2021-08-20 17:03  Zeker62  阅读(223)  评论(0编辑  收藏  举报