基本介绍
竞争条件通常是在操作系统编程时会遇到的安全问题,当两个或多个进程试图在同一时刻访问共享内存或读写某些共享数据时,最后的竞争结果取决于线程执行的顺序(线程运行时序),称为竞争条件(Race Conditions),在Web安全中我们可以沿用这个概念,在服务端逻辑与数据库读写存在时序问题时就可能存在竞争条件漏洞,攻击者通常利用多线程并发请求,在数据库中的余额字段更新之前,多次兑换积分或购买商品,从中获得利益
测试过程
攻击者在提交订单时抓包然后设置很多个线程重放此包,如下图所示,在众多请求中个别请求就有可能争取绕过金额、次数的判断,交易成功,攻击者从中获利
简易示例
这里给出一个文件上传的条件竞争漏洞,以下代码来自upload-labs的Pass-18:
<?php
include '../config