upload-labs的wp

2019年10月19日 0 作者 y1nhui

0x0000 前言

upload不需要介绍了,直接开始干活

0x0001关卡

Pass-01

第一关是前端过滤,可以通过警用js或者上传后抓包改后缀的方法来绕过

Pass-02

先将文件该为.jph文件,然后上传抓包改为php。成功

Pass-03(存在问题待解决)

通过使用phtml文件绕过限制
注:想要能成功解析,需要Apache配置中有该语句:

AddType application/x-httpd-php .php .html .phtml 

想了想,这个语句其实是让Apache将这几个解析为php文件,但是我查到资料称是因为历史原因,部分解析器支持符合正则/ph(p[2-7]?|t(ml)?)/的后缀

Pass-04

过滤了一堆后缀,不过我们用的是Apache,所以可以通过上传.htaccess来将其他后缀文件作为php脚本,如:

AddType application/x-httpd-php .png
php_flag engine 1

就可以用png后缀的文件做php脚本了
如图(注意url)

ur6Y7D.png

Pass-05

禁用了许多,.htaccess也被禁用了,但似乎可以通过大小写绕过
如1.PHp
如图:
ur6XC9.png
这时突然想到,其实上一题似乎也可以绕过的。。。。

Pass-06

也是黑名单。本来想要尝试大小写绕过的,但是在代码中有这一段:

$file_ext = strrchr($file_name, '.');
$file_ext = strtolower($file_ext); //转换为小写

文件后缀会被转为小写,也就绕不过去了。
想要通过windows特性来绕过但是发现
$file_name = deldot($file_name);//删除文件名末尾的点
不过没做去空处理,那么我们可以后缀加空来上传文件

Pass-07

黑名单并且去空了。但是没去点,那就直接通过windows会去除后缀名末尾的点这个特性来绕过
成功

Pass-08

这一题以上说的都过滤了,但是如果注意会发现和前面题相比,少了一个::$DATA的过滤也是一个windows的特性,后缀加上::$DATA绕过后缀检查

Pass-09

过滤的比较完全,但是这次文件名没有变更,而是原文件名直接拼接上去的。
那么: 1.php.%20. -> 1.php.%20 -> 1.php.%20 -> 1.php.就过去了

Pass-10

关键词变为空,那直接双写绕过不就行了。。。(我以为第一二关就能看到,没想到到一半了才看到)

Pass-11

这次是白名单了。
一开始看wp里面说的%00截断还愣了一下,仔细观看了一下源码发现了问题。
代码:

 $img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

这里的路径是直接通过get传入的,我们通过%00截断字符串,如我们?save_path=1.php%00就变成了 img_path=“1.php%00xxxx.jpg”这时因为php5.2x的%00截断漏洞就变成了 img_path="1.php",于是我们便上传成功了。
KF7RAS.png
注意此处url,删去php之后的即可访问
如图KF7Icn.png

Pass-12

也是白名单,看来从第十一题开始就是白名单了。.
同上一题,只是get变成了post。
需要提一下,%00漏洞是url参数包含了%00结果浏览器自动转码后变成了一个字符达到了截断的效果、而post传入参数的话不会有浏览器转码这一过程,所以需要手动转码,即在抓包后hex在对应点写入0x00达到截断的目的
KFbBLt.png
标识处值改为00
url情况如上题

Pass-13

上传图片马,制作图片马直接绕过= =
之后去/include.php里面文件包含验证一下就是

Pass-14

同上= =

Pass-15

同上= =
就很迷茫

Pass-16

这题是二次渲染。先gif+php构成图片马上传再下下来,hex打开后观察未变的值,直接在其内插入php代码再重新上传回去即可。

Pass-17

条件竞争,上传过程中抓包发送
KVpQzt.png
同时访问对应url即可 如上传shell.php即访问upload/shell.php

Pass-18

也是条件竞争,图片马传就是了

Pass-19

$file_name = $_POST['save_name'];

$img_path = UPLOAD_PATH . '/' .$file_name;可以看出保存路径其实是用户自定义的,直接00阻断试试?
KeIb9O.png
此处并未显示图片
KeoGr9.png
那么直接访问呢?
KeoU56.png
成功了

0x0002总结

upload-labs一共20题,主要黑名单、白名单、图片马、条件竞争这四种,但其实真的在测试环境中遇到的话,可能还有更多的复杂情况,比如上传后文件进行加密再由服务器自己加上后缀名