Upload-labs靶场通关
第一关
前端验证
直接bp抓包修改
先将php文件改为jpg文件然后再bp修改文件类型

将php改为jpg
上传成功

第二关
检测文件mime类型
Bp抓包修改

修改为imag/png
上传成功

第三关
修改php后缀绕过
注意配置文件修改


后缀改为phtml
上传成功

第四关

几乎所有后缀名都被过滤
先上传htaccess文件
这样所有的文件都会按照php来解析

注意要把前面的文件名删掉只留下.htaccess
上传成功
之后把php后缀换为jpg后缀后上传

上传成功
第五关
查看源码

好家伙 后缀全被加到黑名单了 提示告诉我们存在一个readme.php文件
所以使用php配置文件.user.ini文件上传 (php.ini 是 php的配置文件,.user.ini 中的字段也会被 php 视为配置文件来处理,从而导致 php 的文件解析漏洞。)

上传配置文件
再上传一个图片马
访问上传目录下的readme.php
注意:需要将php改为cgi模式


第六关
查看源码

.htaccess .ini后缀被过滤
但是没有了大小写限制
使用大小写绕过
把php改为Php
把phpstudy版本调回
上传成功

第七关
查看源码

少了首尾去空
考虑空格绕过

上传成功

第八关
查看源码

少了deldot函数过滤点
加个点绕过

上传成功

第九关
查看源码

少了去除字符串::$DATA
使用::$DATA绕过
php在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持"::$?DATA"之前的文件名 他的目的就是不检查后缀名。


注意访问时要把::$DATA去掉

第十关
查看源码

先删除点然后去掉空格
可以使用点空格点进行绕过


上传成功
第十一关
查看源码

使用str_replace函数进行过滤
可以使用双写进行绕过
php改为pphphp


第十二关
查看源码

使用00截断绕过
需要关闭magic_quotes_gpc php版本小于5.3.4
上传php文件开启抓包
改包

访问php文件 http://127.0.0.1/upload/upload/1234.php

第十三关
还是00截断但是 是post传参
需要在二进制中修改
改为1.php+方便查找


改为00
放包 访问php文件

第十四关
制作图片马上传
在cmd输入命令
copy 123.jpg/b + 1.php/a 444.jpg
上传图片马查看路径


使用文件包含漏洞构造文件包含函数


第十五关
还是使用图片马(同14关)


第十六关
开启php_exif

依旧是图片绕过(同14关)

第十七关
二次渲染过滤
先上传一个gif
使用winhex对比前后两个gif查找相同的地方插入webshell

再次上传
利用文件包含漏洞

第十八关
条件竞争
写webshell
<?php fputs(fopen('Tony.php','w'),'<?php phpinfor();?>');?>
上传抓包


开始攻击不停访问shell.php
第十九关
依旧是条件竞争
但需要图片马
上传图片马后操作同18关
第二十关
把php木马上传抓包

访问upload-19.php
127.0.0.1/upload/upload/upload-19.php

上传成功
第二十一关
上传木马改包

