利用条件竞争突破优惠券仅能使用一次逻辑限制

news2024/12/23 23:46:39

Portswigger练兵场之条件竞争

目录

  • Portswigger练兵场之条件竞争
    • 🦄条件竞争-突破一次逻辑限制
      • 🚀实验前置必要知识点
      • 🏆实验要求
      • ⚡️渗透开始
          • 1. 站点分析
          • 2. 登录
          • 3.日志探查
          • 4.功能点探究
          • 5.完成实验
        • 修复方案

🦄条件竞争-突破一次逻辑限制

Lab: Limit overrun race conditions

🚀实验前置必要知识点

利用条件竞争有概率超过应用程序的业务逻辑的某种限制

例如,考虑一个在线商店,它允许您在结账时输入促销代码以获得订单的一次性折扣。若要应用此折扣,应用程序可以执行以下高级步骤:

  1. 检查您是否尚未使用此代码。
  2. 将折扣应用于订单总额。
  3. 更新数据库中的记录以反映您现在已使用此代码的事实。

如果以后尝试重用此代码,则在进程开始时执行的初始检查应阻止您执行以下操作:

如果以前从未应用过此折扣代码的用户尝试在几乎完全相同的时间应用两次,会发生什么:

应用程序通过临时子状态转换;也就是说,在请求处理完成之前,它进入然后再次退出的状态。在这种情况下,子状态在服务器开始处理第一个请求时开始,在更新数据库以指示您已使用此代码时结束。

这引入了一个小的比赛窗口,在此期间可以根据需要多次重复申请折扣。

这种攻击有许多变体,包括:

  • 多次兑换礼品卡
  • 多次对产品进行评级
  • 提取或转移超过您账户余额的现金
  • 重用单个验证码解决方案
  • 绕过反暴力破解速率限制

限制超支是所谓的“检查时间到使用时间”(TOCTOU)缺陷的一个子类型。

🏆实验要求

此实验室的购买流包含一个竞态条件,允许您以非预期的价格购买物品。

为了解决实验室的问题,需要成功购买了一件L33t轻型皮夹克

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

⚡️渗透开始

  • 访问对应靶场界面
https://portswigger.net/web-security/race-conditions/lab-race-conditions-limit-overrun
  • 启动靶场
1. 站点分析

这是SHOP类型的网站

我们的最终目的是花费1337刀买下夹克

2. 登录

首先根据提示登录账户wiener:peter


根据信用可以发现我们具有50美元


尝试购物以及添加商品,进行功能点的操作

3.日志探查

在进行整体操作的过程中,发现存在20%的折扣(购买优惠)

POST /cart添加购物车端点

POST /cart/coupon添加折扣端点

在该端点多次添加-20%折扣发现是被阻止的

GET /cart端点

访问该端点会显示自身的购物车,从cookie来看是session记录,尝试修改cookie

通过修改cookie后我们来到了一个空购物车,证明是通过cookie将购物信息存储在后端
任何的操作都是以cookie信息为准

4.功能点探究

从逻辑来说,只能应用一次折扣,第二次应用就会出现折扣已被使用

如果逻辑判定不严谨,同一时间使用N次折扣会使被允许的操作,将折扣移除后
启动5个发送数据包


添加为1组,尝试按顺序发送请求组,使用单独的连接以减少干扰的可能性


发送后发现只有第一个是添加折扣成功,后4个没有成功

尝试使用并发条件竞争,发送到枚举模块,以100的线程发现通过这种方法可以重复多次利用购物券,突破了只能用一次的限制

跳转到购物界面,发现购物券已被多次使用

5.完成实验


添加夹克到购物车,再次使用同样的方法成功购买夹克

修复方案

增加新的校验,防止并发。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/954339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java八股文面试[多线程]——线程池拒绝策略

四种线程池拒绝策略(handler) 当线程池的线程数达到最大线程数时,需要执行拒绝策略。拒绝策略需要实现 RejectedExecutionHandler 接口,并实现 rejectedExecution(Runnable r, ThreadPoolExecutor executor) 方法。不过…

前端基础2——CSS样式

文章目录 一、使用方式1.1 内联方式1.2 内部方式1.3 外部导入方式(推荐) 二、选择器类型2.1 元素选择器2.2 ID选择器2.3 类选择器2.4 派生选择器 三、常用属性3.1 内边距和外边距3.2 文本3.3 边框3.4 背景3.5 定位3.6 浮动3.7 字体3.8 其他属性 四、案例…

信息技术02--初/高中--分类选择题(377道题与解析)

文章目录 第一章 办公软件 1-96第二章 信息技术基础 1-41第三章 计算机系统基础 1-28第四章 多媒体技术 1-115第五章 计算机网络技术 1-50第六章 信息安全 1-3第七章 算法与程序简介 1-13第八章 数据结构 1-2第九章 数据库技术 1-20第十章 练习 1-9 第一章 办公软件 1-96 1、某…

Cygwin是什么?是Windows还是Linux?

原文作者:gentle_zhou 原文链接:https://bbs.huaweicloud.com/blogs/408674 最近在和客户交流的时候,一直以为客户的研发环境就是windows 7,直到和对面的研发团队交流的时候,得到的反馈是在windows 7系统上安装了Cygw…

C语言深入理解指针(非常详细)(一)

目录 内存和地址内存编址的理解 指针变量和地址取地址操作符(&)指针变量和解引用操作符(*)指针变量如何拆解指针类型解引用操作符 指针变量的大小 指针变量类型的意义指针的解引用指针-整数 const修饰指针const修饰变量const修…

智慧园区封闭化管理之人车定位及轨迹追踪

园区封闭化管理在提高园区安全性、管理效率方面发挥着重要作用,人车定位及轨迹追踪是推动园区智慧封闭化管理的关键技术。本文将探讨人车定位及轨迹追踪技术在智慧园区封闭化管理中的应用,带您了解数字化时代园区管理的创新之路。 一、人车定位技术的突破…

Echarts遇到Vue3时遇到的问题

将vue2的Echarts代码迁移到了vue3项目上,引发的问题 问题描述: 1. 点击图例legend时刻度轴偏移,图像不展示,以及报错 初始chart正常.图 点击图例后的chart和报错.图 2. 调用resize()不生效且报错 初始正常.图 修改屏幕尺寸调用r…

[ Linux Audio 篇 ] Linux Audio 子系统资料集锦

Linux Audio 子系统资料 背景OSS VS ALSAALSA 驱动ALSA libALSA Plugin音频延迟音频调试音频书籍 背景 最近需要准备Linux Audio 相关的PPT,于是将以往的知识点和遇到的问题进行整理和梳理,以便向大家讲解。同时,还整理了在这个过程中发现的…

小技巧,将你的Python代码运行情况用动画实时呈现

咱们初学者练习编程时,常常难以理解简单循环,数据结构,迭代的操作原理。 现在不怕了,我们可以借助一个在线工具逐步执行代码,并直观查看其运行过程。 它是由 Philip Guo 开发的一个免费教育工具,帮助学生攻…

这5个理由告诉你为什么要采用微前端架构

微前端是一种前端开发的架构方法,已经变得越来越流行,这也预示着它很可能代表 Web 开发的未来。所以学习这种架构带来的好处对你的应用程序和开发团队是不言而喻的。 本文将分享我和我的团队使用这种方法两年来的经验所得,以及帮助你分析在你…

仿弹壳特工队,绝地反击活动使用电池翻格子小游戏(JAVA小游戏)

近来太无聊,玩了一款割草游戏,里面有个活动感觉挺好玩的,像扫雷一样,寻找线索(灯泡),在这里使用JAVA语言也简单实现下游戏。 先上效果图,鼠标点击对应的块,可以展开相连的方块,点击…

nvm集合node版本,解决新版本jeecgboot3.5.3前端启动失败问题

jeecgboot前端3.5.3页面如下 使用之前的pnpm启动会报错,pnpm是node进行安装的,查询后发现,vue3版本的页面至少需要node16版本,我之前的版本只有15.5,适用于vue2 那么我将先前的node15.5版本删除,然后安装…

【知识分享】C语言应用-易错篇

一、C语言简介 C语言结构简洁,具有高效性和可移植性,因此被广泛应用。但究其历史的标准定义,C语言为了兼容性在使用便利性作出很大牺牲。在《C陷阱与缺陷》一书中,整理出大部分应用过程中容易出错的点,本文为《C陷阱与…

ffmpeg把RTSP流分段录制成MP4,如果能把ffmpeg.exe改成ffmpeg.dll用,那音视频开发的难度直接就降一个维度啊

比如,原来我们要用ffmpeg录一段RTSP视频流转成MP4,我们有两种方案: 方案一:可以使用以下命令将rtsp流分段存储为mp4文件 ffmpeg -i rtsp://example.com/stream -vcodec copy -acodec aac -f segment -segment_time 3600 -reset_t…

ubuntu20.04+ROS noetic在线运行单USB双目ORB_SLAM

双目摄像头主要有以下几种,各有优缺点。 1.单USB插口,左右图像单独输出2.双USB插口,左右图像单独输出(可能存在同步性问题)3.双USB插口,左右图像合成输出4.单USB插口,左右图像合成输出 官方版…

【C++】线程安全问题

原子类型非线程安全 #include <iostream> #include <thread>int main() {int num 0;int count 100000;std::thread thread1([&](){for(int i 0; i < count; i){num;}});std::thread thread2([&](){for(int i 0; i < count; i){num;}});std::thr…

jsp+servlet零食商城java网上购物超市Mysql源代码

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目介绍 项目名:网上零食商城 技术栈 jspservlet 系统有3权限…

动静分红,循环购模式:微三云门门

动静分红&#xff0c;循环购模式&#xff1a;微三云门门 商业模式概述&#xff1a; 动静分红&#xff0c;循环购模式是一种创新商业模式&#xff0c;旨在解决平台用户复购率和C端裂变的难题。该模式以能量值和贡献值为核心资产&#xff0c;结合动态和静态奖金池&#xff0c;为…

产品展示视频拍摄制作流程

通过精心策划和制作的产品展示视频&#xff0c;展示产品的独特魅力和卓越功能。激发受众对产品的兴趣和购买欲望。为了确保产品展示视频的制作质量和效果&#xff0c;需要团队一起探讨具体的拍摄制作流程。深圳产品活动视频制作公司老友记小编为您分析产品展示视频的拍摄制作过…

中国人民大学与加拿大女王金融硕士——为什么读金融硕士,这些理由够不够?

金融硕士要不要读&#xff1f;身在金融行业的我们拥有的本科学历还够用吗&#xff1f;随着教育的发展&#xff0c;高学历的人才越来越多。金融行业好多职位的招聘门槛已经提升到硕士学历了。面对职场高学历人才的涌入&#xff0c;对于在职的我们来说&#xff0c;是一种潜在的压…