2023-08-19 15:03阅读: 188评论: 0推荐: 0

iwebsec-文件上传 02 文件名过滤绕过

01、题目分析

文件上传过滤类型,题目中已经告诉我们了,我们已经知道了过滤类型,但是出于学习和判断的目的,那么我们还是得判断一下文件上传过滤类型

02、文件上传

先用哥斯拉创建一个一句话木马

命名为1.php

然后尝试上传木马

image

image

依旧是被拦截,但是这次burp抓到了数据包,说明是后端过滤

image

分析数据包可以发现,不仅仅是过滤了文件名,还有可能过滤了文件类型,那我们可以先上传一个正常的图片文件,然后抓包分析下正常的数据包是什么样的

image

image

-----WebKitFormBoundaryQRZRLsAeHLY4BFQD
Content-Disposition: form-data; name="upfile"; filename="kongbai.png"
Content-Type: image/png

通过分析数据包,我们可以得出猜出有可能有三种过滤方式,第一种是针对文件名过滤,第二种是针对文件类型过滤,第三种是针对文件名和文件类型的双重过滤,我们先试试把php修改下大小写能不能绕过过滤
image

image

那就没什么好说的了,复制图片地址,哥斯拉连接,拿到webshell

image

03、源码分析

<?php
//print_r($_FILES["upfile"]);
if(is_uploaded_file($_FILES['upfile']['tmp_name'])){
$upfile=$_FILES["upfile"];
//获取数组里面的值
$name=$upfile["name"];//上传文件的文件名
$type=substr($name, strrpos($name, '.')+1);//上传文件的类型
$size=$upfile["size"];//上传文件的大小
$tmp_name=$upfile["tmp_name"];//上传文件的临时存放路径
//判断是否为图片
if($type=="php"){
echo "<script>alert('不能上传php文件!')</script>";
die();
}else{
$error=$upfile["error"];//上传后系统返回的值
echo "================<br/>";
echo "上传文件名称是:".$name."<br/>";
echo "上传文件类型是:".$type."<br/>";
echo "上传文件大小是:".$size."<br/>";
echo "上传后系统返回的值是:".$error."<br/>";
echo "上传文件的临时存放路径是:".$tmp_name."<br/>";
echo "开始移动上传文件<br/>";
//把上传的临时文件移动到up目录下面
move_uploaded_file($tmp_name,'up/'.$name);
$destination="up/".$name;
echo "================<br/>";
echo "上传信息:<br/>";
if($error==0){
echo "文件上传成功啦!";
echo "<br>图片预览:<br>";
echo "<img src=".$destination.">";
//echo " alt=\"图片预览:\r文件名:".$destination."\r上传时间:\">";
}
}
}
?>
posted @   别打扰我摸鱼  阅读(188)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起