由于进程竞争相关资源(如CPU的运行时间等)导致的程序错误,称为Race Condition漏洞。
漏洞场景:简易转账程序,开始的时候bank1001账号有10000元钱,bank1002账号0元钱,每一次请求就从bank1001账号转账10元钱到bank1002账号。
创建数据库tmpbank,其中有一张表users,对应的SQL执行语句如下:
drop database if exists tmpbank;
create database tmpbank;
use tmpbank;
create table users(id varchar(50) primary key,number int);
insert usersvalues("bank1001",10000);
insert users values("bank1002",0);
对应的PHP代码如下:
functiongetnum($db,$id){
$query="select * from users whereid='".$id."'";
$result= mysqli_query($db,$query);
$row=mysqli_fetch_assoc($result);
return $row['number'];
}
functionupdate($db,$id,$num){
$query="update users set number=$numwhere id='".$id."