首页 > 其他分享 >iwebsec-文件上传 03 Content-Type过滤绕过

iwebsec-文件上传 03 Content-Type过滤绕过

时间:2023-08-19 15:22:55浏览次数:28  
标签:03 name 文件 echo Content 过滤 error iwebsec 上传

01、题目分析

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

02、文件上传

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

命名为1.php

然后尝试上传木马

image

image

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

image

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

image

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

通过分析数据包,我们可以得出猜出有可能有三种过滤方式,第一种是针对文件名过滤,第二种是针对文件类型过滤,第三种是针对文件名和文件类型的双重过滤,因为题目已经告诉我们什么情况了,没啥可说的,直接试试第二种修改数据包中的Content-Type

image

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=$upfile["type"];//上传文件的类型 
$size=$upfile["size"];//上传文件的大小 
$tmp_name=$upfile["tmp_name"];//上传文件的临时存放路径 
//判断是否为图片 
switch ($type){ 
case 'image/pjpeg':$okType=true; 
break; 
case 'image/jpeg':$okType=true; 
break; 
case 'image/gif':$okType=true; 
break; 
case 'image/png':$okType=true; 
break; 
} 

if($okType){ 
/** 
* 0:文件上传成功<br/> 
* 1:超过了文件大小,在php.ini文件中设置<br/> 
* 2:超过了文件的大小MAX_FILE_SIZE选项指定的值<br/> 
* 3:文件只有部分被上传<br/> 
* 4:没有文件被上传<br/> 
* 5:上传文件大小为0 
*/ 
$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上传时间:\">"; 
}elseif ($error==1){ 
echo "超过了文件大小,在php.ini文件中设置"; 
}elseif ($error==2){ 
echo "超过了文件的大小MAX_FILE_SIZE选项指定的值"; 
}elseif ($error==3){ 
echo "文件只有部分被上传"; 
}elseif ($error==4){ 
echo "没有文件被上传"; 
}else{ 
echo "上传文件大小为0"; 
} 
}else{ 
echo "请上传jpg,gif,png等格式的图片!"; 
} 
} 

?>

标签:03,name,文件,echo,Content,过滤,error,iwebsec,上传
From: https://www.cnblogs.com/bdrwmy/p/17642502.html

相关文章

  • iwebsec-文件上传 02 文件名过滤绕过
    01、题目分析文件上传过滤类型,题目中已经告诉我们了,我们已经知道了过滤类型,但是出于学习和判断的目的,那么我们还是得判断一下文件上传过滤类型02、文件上传先用哥斯拉创建一个一句话木马命名为1.php然后尝试上传木马依旧是被拦截,但是这次burp抓到了数据包,说明是后端过滤......
  • iwebsec-文件上传 01 前端JS过滤绕过
    01、题目分析事实上,文件上传过滤是很正常的,需要自行判断是前端过滤还是后端过滤,一般上传木马的时候可以进行抓包,如果直接点击上传直接弹出禁止上传的界面,而没有抓到数据包,那就说明是前端js过滤,但是这个题目已经说明了是前端js过滤,就不用再测试了02、文件上传先用哥斯拉创建一个......
  • CH32V003的输入/输出端口
    GPIO端口是处理器与外部设备打交道的基础,为了更好地应用它,下面就对CH32V003的通用输入输出端口(GPIO)的寄存器结构及用法做详细深入地讨论。CH32V003是一个32位的处理器,但它的GPIO端口并不是把32个引脚都引出来,而是根据芯片型号及其封装的不同,分别引出来了18个(CH32V003F4P6、CH32V00......
  • iwebsec-sql注入 13 二次注入
    01、题目分析二次注入的原理是先把sql注入语句存放在数据库中,然后第二次通过调用数据库的数据(提前放置好的注入语句),然后进行sql注入那么我们先将注册用户,将sql语句存放在数据库中,然后通过找回密码操作,数据库会自动调取数据库中的数据,就执行了我们的sql语句02、手工注入二次注......
  • CH32V003的时钟配置
    要让CH32V003正常工作,首先要对它的时钟源进行配置。CH32V003的最高工作频率为48MHz,因此给它的主时钟频率最大不能超过48MHz。实际上,通常会使用频率较低的晶振,以降低外部电磁干扰,然后再通过内部倍频的方式把主时钟频率提高。根据管方手册给出的数据,外部晶振的频率范围是4~25MHz,一般......
  • 代码随想录算法训练营第三天| 203.移除链表元素 ,707.设计链表 ,206.反转链表
    203.移除链表元素题目给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val==val的节点,并返回新的头节点。第一想法定义一个指针a指向头节点,顺序遍历链表,循环结束的条件是指针a.next为null删除操作是判断a.next.val=val时让a.next=a.next.nex......
  • iwebsec-sql注入 12 等价函数替换过滤
    01、题目分析依旧是对等号进行了过滤,那么可以尝试一些等价值的内容来替换等号02、手工注入依旧是对等号进行了过滤,那么可以尝试一些等价值的内容来替换等号,比如like,rlike,regexp替换,id=1可以用idlike1以及id>0andid<2以及!(id<>1)进行绕过--查询行数?id=1order......
  • iwebsec-sql注入 10 双重url编码绕过
    01、题目分析依旧是对关键词进行了过滤,除了双写大小写等过滤方法还可以采用双重url编码,在SQL注入攻击中,双层URL编码绕过机制是一种黑客利用URL编码的漏洞绕过安全检查的手法。原始的URL编码是将特殊字符转换成%后面跟着它的ASCII值的十六进制表示。例如,'被编码为%......
  • iwebsec-sql注入 11 十六进制编码绕过
    01、题目分析这里对单引号双引号啥的进行了过滤,可以采用16进制编码进行绕过02、手工注入这个和上次的双重url编码有异曲同工之妙,不过这个编码就简单了,直接十六进制编码即可,这里采用的编码软件是CaptfEncoder-win-x64-3.1.2.exe,16进制编码主要是在引号方面--查询行数?id=1or......
  • iwebsec-sql注入 08 大小写过滤注入
    01、题目分析大小写过滤顾名思义,会对正常小写的sql语句进行过滤,这个时候只需要大写sql注入语句即可02、手工注入?id=-1UNIONSELECT1,2,3?id=-1UNIONSELECT1,2,DATABASE()?id=-1UNIONSELECT1,2,GROUP_CONCAT(TABLE_NAME)FROMINFORMATION_SCHEMA.TABLESWHERETABLE......