Pass-1 前端验证绕过
Pass-2 Content-Type方式绕过
修改Content-Type: image/jpeg、image/png、image/gif(上述三种任选其一),重新发包
.
Pass-3 黑名单绕过
在某些特定环境中某些特殊后缀仍会被当作php文件解析 php、php2、php3、php4、php5、php6、php7、pht、phtm、phtml。
Pass-4 .hataccess绕过
- 采用.htaccess文件来帮助绕过
- .htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。
- htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。
<FilesMatch "12.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
意思就是如果文件里面有一个后缀为12.png的文件,他就会被解析成.php
Pass-5 大小写绕过
查看源码
发现少了大小写
Pass-6 空格绕过
查看提示及源码发现少了收尾去空
尝试修改数据包上传
Pass-7 去掉末尾的点
//完整的过滤
$file_name = deldot($file_name);//删除文件名末尾的点
$file_ext = strrchr($file_name, '.');
$file_ext = strtolower($file_ext); //转换为小写
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
$file_ext = trim($file_ext); //收尾去空
//第七关代码
//删除文件末尾的点
$file_ext = strrchr($file_name, '.');
$file_ext = strtolower($file_ext); //转换为小写
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
$file_ext = trim($file_ext); //首尾去空
Pass-8 去除字符串
少了去除字符串
没有对后缀名中的’::$DATA’进行过滤。
在php+windows的情况下:
如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,
不会检测后缀名且保持"::$DATA"之前的文件名。
利用windows特性,可在后缀名中加” ::$DATA”绕过
Pass-9 点 空格 点
通过源码发现,所有的过滤都是一次的,并未对其进行循环过滤。也就是说源码中提到的删除空格,删除点都是只删除一次,那么可以在数据包中将php后缀添加. .,形成.php. .,由于只验证一次,所以删除一个点和一个空格后就不在删除了
Pass-10 双写
看源码发现,有一个替换操作,尝试双写
Pass-11 %00截断
上传一张正确图片,发现是get提交,那么我们不妨在这块将路径改掉,改为upload/web.php%00,那么后面不管是什么东西都会被截断掉,然后经过move_uploaded_file函数将临时文件重新复制给我们的截断之前的文件路径,当然,我们还是要上传jpg文件的
利用方法:设置上传路径为upload/12.php%00
,添加12.php%00
内容为了控制路径,上传文件后缀为白名单即可
Pass-12 路径可控 POST %00 截断
由于路径可控依旧采取%00截断,但是是post提交,我们需要改下编码如下图,get不用修改是因为可以自动识别%00编码
Pass-13
使用 图片马 + 文件包含
绕过
http://127.0.0.1/upload-labs/include.php?file=upload//1420240728152424.gif
Pass-14、15
同上
Pass-16 要二次渲染
图要传二次渲染的图同上
Pass-17 条件竞争
<?php @fputs(fopen('123.php',w),'<?php phpinfo();?>');?>
//当前目录生成123.php
发送到攻击模块
清参数
攻击
127.0.0.1/upload-labs/upload/mm17.php一直访问,创建成功后就可以停止攻击了
Pass-18
传图片马,同13
Pass-19
保存为1.php.