0x01 条件竞争

条件竞争漏洞是一种服务器端的漏洞,是由于开发者设计应用程序并发处理时操作逻辑不合理而造成。当应用面临高并发的请求时未能同步好所有请求,导致请求与请求之间产生等待时出现逻辑缺陷。该漏洞一般出现在与数据库系统频繁交互的位置,例如金额同步、支付等较敏感操作处。另外条件竞争漏洞也会出现在其他位置,例如文件的操作处理等。

0x02 例子1

某平台提现功能的业务处理流程为: 用户发起提现 -> 获取用户金额并判断能否提现 -> 提现:生成提现订单->扣除提现金额

<?phppublic funtion withdraw($user_id, $withdrawal_amount){//获取余额$money = $db->FirstRow("SELECT * FROM ".Tb('money')." WHERE user_id='{$user_id}'");if($money['balance'] == 0) ShowError('金额为零,无法提现!');//提现余额小于等于数据库的值就提现if ($withdrawal_amount <= $money['balance']) {create_withdraw_order($withdrawal_amount, $user_id, time());$db->Execute("UPDATE ".Tb('money')." SET balance=balance-{$withdrawal_amount} WHERE uer_id='{$user_id}'");ShowSuccess('提现成功!');}else{ShowError('提现金额过高!');}}?>

上述代码在非并发情况下是没有问题的。
假设现有一个用户在系统中共有2000元可以提现,他想全部提现。于是该用户同时发起两次提现请求,第一次提交请求提现2000元,系统已经创建了提现订单但还未来得及修改该用户剩余金额,此时第二次提现请求同样是提现2000元,于是程序在还未修改完上一次请求后的余额前就进行了余额判断,显然如果这里余额判断速度快于上一次余额修改速度,将会产生成功提现的两次订单,而数据库中余额也将变为-2000。而这产生的后果将会是平台多向该用户付出2000元。

0x03 例子2

先存储文件,再判断是否合法,然后又删除。。。

首先将文件上传到服务器,然后检测文件后缀名,如果不符合条件,就删掉,典型的“引狼入室”。
具体攻击流程查看,https://baynk.blog.csdn.net/article/details/102910267

对于“条件竞争”的利用相关推荐

  1. upload_labs_pass18_条件竞争

    pass18 第18关和前面14-17关(要求上传图片马)不同,直接要求上传一个webshell 提示: 源码: $is_upload = false; $msg = null;if(isset($_ ...

  2. Python之条件竞争

    0x00 条件竞争 一.漏洞概念 竞争条件指多个线程或者进程在读写一个共享数据时结果依赖于它们执行的相对时间的情形.例如:考虑下面的例子: 假设两个进程P1和P2共享了变量a.在某一执行时刻,P1更新 ...

  3. 智能合约审计之条件竞争

    文章前言 与大多数区块链一样,以太坊节点汇集交易并将其形成块,一旦矿工解决了共识机制(目前Ethereum的ETHASH PoW),这些交易就被认为是有效的,解决该区块的矿工也会选择来自该矿池的哪些交 ...

  4. upload-labs 21超详细通关笔记+部分代码审计(条件竞争等)

    upload-labs 21目录 1-1 前端JS校验绕过 1-2 content-type 绕过 1-3 多种扩展名绕过 1-4 .htaccess绕过 1-6 大小写绕过 1-7 文件名加空格绕过 ...

  5. 【upload靶场17-21】二次渲染、条件竞争、黑白名单绕过

    目录 一.推荐 Pass17(二次渲染绕过) 特点: 分析: 利用: Pass18(条件竞争) 特点: 分析: 利用: Pass19(条件竞争) 特点: 分析: 利用: Pass20(黑名单检测) 特 ...

  6. 文件上传漏洞、编辑器漏洞和条件竞争漏洞介绍(笔记)

    (一)文件上传漏洞介绍: 文件上传是Web应用的必备功能之一,比如,上传头像.上传简历.上传文档等. 那么上传的过程中如果对用户上传的文件未校验或者校验不严格.过滤不严格,那么恶意用户就可以恶意修改上 ...

  7. linux kernel 4.4.1 uaf提权漏洞,条件竞争在Kernel提权中的应用

    Double-Fetch漏洞简介 随着多核CPU硬件的普及,并行程序被越来越广泛地使用,尤其是在操作系统.实时系统等领域.然而并行程序将会引入并发错误,例如多个线程都将访问一个共享的内存地址.如果其中 ...

  8. 第三十二天学习笔记-web漏洞-文件上传的条件竞争、.htaccess文件与.user.ini文件使用前提、二次渲染

    目录 二次渲染原理 绕过方法 htaccess配置文件 .user.ini 二次渲染原理 在我们上传文件后,网站会对图片进行二次处理(格式.尺寸,保存,删除 要求等),服务器会把里面的内容进行替换更新 ...

  9. mysql锁争用_关于MYSQL条件竞争与锁的问题

    最近在整理关支付安全的内容,其中就是涉及到了一个在支付过程中的条件竞争问题.以下都是基于mysql的与php的架构来描述该问题,大佬勿喷. 0x01. 条件竞争 什么是条件竞争: 竞争条件 发生在多个 ...

最新文章

  1. 黑客可以让协作机器人成为杀手
  2. 神策数据多少含金量?PICOOC 有品帮你智能称量
  3. BZOJ 4710: [Jsoi2011]分特产
  4. golang日期时间格式format()
  5. Python编程进阶,Python如何实现多进程?
  6. linux内核模块签名,linux内核模块签名
  7. 高性能服务器io函数,操作系统中的I/O,及高性能IO模型
  8. 云原生的基石,一文读懂容器、Docker、Pod到底是什么!
  9. plc编程及应用_西门子PLC编程及应用
  10. 华为认证计算机英语,hcna考试是英文还是中文
  11. 数据结构与算法分析(C++语言版)_张琨版 第一章课后习题答案
  12. 计算机exsl表f4代表锁定,(Excel中F4是什么键)笔记本锁定单元格f4怎么按
  13. css 实现一个尖角_css中尖角的制作实例方法总结
  14. 自动化生产线仿真教学
  15. 科研实习 | 清华大学交叉信息研究院弋力老师招收三维视觉科研实习生
  16. 不良资产证券化未来推进需跨越的障碍
  17. 朴素贝叶斯算法原理以及python实现
  18. 傻白探索Chiplet,Chiplet技术简介(一)
  19. 美森快船收费标准和操作流程是怎样的?
  20. java中cache是什么_java中的cache机制

热门文章

  1. 软件测试之测试用例颗粒度问题
  2. ADB命令连接逍遥模拟器
  3. IE 今天正式停用!网友炸锅了
  4. 1103. Integer Factorization (30)
  5. 3D模型欣赏:Hydra 3D角色 黑暗邪恶之感 相当吸睛 【3D游戏建模教程】
  6. Mars3D中无人机航拍的数据想叠加到三维地图上,实现的流程和方法
  7. 在51.com一岁生日庆祝会上的致辞
  8. 测试3d游戏pfs的软件,Beepa Fraps(3D游戏测帧录制软件)
  9. php会议签到签退系统,会议签到管理系统,无障碍会议签到系统,一卡通会议签到系统,会议签到系统 - 新开普(NewCapec)...
  10. 100万算大钱还是小钱?