upload-labs

发布时间 2024-01-12 22:00:29作者: 3xyyy

Pass-01

前端js验证

谷歌设置->隐私安全->网站设置->JavaScript

image-20240101165321384

上传php文件

复制图片地址 蚁剑连接

文件上传成功

Pass-02

MIME是一种类型(例如:text,image),MIME是一种标准,是用来表示文档,文件或字节流的性质和格式(告诉浏览器这个文件的类型,目的跟文件扩展名类似,但更加具体 )

允许上传文件格式:jpeg,png,gif

抓包 修改Content-Type:image/png

文件上传成功

Pass-03

deny_ext(黑名单)拒绝后缀名为asp,aspx,php,jsp文件

查看源码 不允许上传.asp,.aspx,.php,.jsp后缀文件

抓包 使用php3.phtml等后缀

Pass-04

黑名单绕过

查看源码:

$deny_ext=array(".php",".php5",".php4",".php3",".php2",".php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".ini");

不允许上传以上文件类型 .htaccess 没在黑名单里面

先上传.htaccess文件

image-20240101172920884

把文件名含有jpg的文件当成php文件执行

上传jpg文件(图片马)

蚁剑连接

图片马

一张图片 一个写有一句话木马的php文件

打开终端 cd

image-20240101173342628

Pass-05

$file_ext = strtolower($file_ext); //转换为小写

源码没有转换为小写 改为.PHP

抓包 修改.PHP

Pass-06

.php+空格

抓包

Pass-07

$file_name = deldot($file_name);//删除文件名末尾的点

源码中没有删除文件末尾的点

改为.php.

文件上传成功

Pass-08

$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA

.php::$DATA 抓包

Pass-09

查看源码

$file_ext = strrchr($file_name, '.');

末尾的点和空格只删除了一次 用.php. .(.空格.)绕过

文件上传成功

Pass-10

查看源码

$file_name = str_ireplace($deny_ext,"", $file_name);

黑名单里面的后缀为空 但是只是替换了一次 所以可以用双写 pphphp绕过为.pphphp

文件上传成功

Pass-11

白名单绕过 GET

%00截断:xx.php%00

Pass-12

Pass-13

上传图片马

构造的URL地址为

include.php?file=upload/6920240104114225.jpg

蚁剑连接成功.

Pass-14

getimagesize()函数:测定GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小 返回图像的尺寸,文件类型,图片高度与宽度

(函数成功返回的就是一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息0

同理上传图片马

Pass-15

exif_imagetype() 函数:读取图像的第一个字节并检查其签名。如果发现了恰当的签名则返回一个对应的常量,否则返回 FALSE

同理上传图片马

Pass-16

二次渲染

Pass-17

条件竞争

上传php文件

进入intruder攻击

在positions中修改

进入payloads循环攻击10000次

询问网站

Pass-18

图片型条件竞争

上传jpg文件

同理

Pass-19

上传php文件

可在网页上修改文件名

Pass-20

先验证content-type 是否合法

判断file数组最后一个元素是否合法

在对数组第一位和$file[count($filr)-1]拼接保存判断合法

抓包 设置content-type和file数组 使file数组最后一个元素为白名单内的元素

$file[xount($file)-1]设置为空即可通过move_upload_file