Upload-labs靶场通关


第一关

前端验证

直接bp抓包修改

先将php文件改为jpg文件然后再bp修改文件类型

img

将php改为jpg

上传成功

img

第二关

检测文件mime类型

Bp抓包修改

img

修改为imag/png

上传成功

img

第三关

修改php后缀绕过

注意配置文件修改

img

img

后缀改为phtml

上传成功

img

第四关

img

几乎所有后缀名都被过滤

先上传htaccess文件

这样所有的文件都会按照php来解析

img

注意要把前面的文件名删掉只留下.htaccess

上传成功

之后把php后缀换为jpg后缀后上传

img

上传成功

第五关

查看源码

img

好家伙 后缀全被加到黑名单了 提示告诉我们存在一个readme.php文件

所以使用php配置文件.user.ini文件上传 (php.ini 是 php的配置文件,.user.ini 中的字段也会被 php 视为配置文件来处理,从而导致 php 的文件解析漏洞。)

img

上传配置文件

再上传一个图片马

访问上传目录下的readme.php

注意:需要将php改为cgi模式

img

img

第六关

查看源码

img

.htaccess .ini后缀被过滤

但是没有了大小写限制

使用大小写绕过

把php改为Php

把phpstudy版本调回

上传成功

img

第七关

查看源码

img

少了首尾去空

考虑空格绕过

img

上传成功

img

第八关

查看源码

img

少了deldot函数过滤点

加个点绕过

img

上传成功

img

第九关

查看源码

img

少了去除字符串::$DATA
使用::$DATA绕过

php在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持"::$?DATA"之前的文件名 他的目的就是不检查后缀名。

img

img

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

img

第十关

查看源码

img

先删除点然后去掉空格

可以使用点空格点进行绕过

img

img

上传成功

第十一关

查看源码

img

使用str_replace函数进行过滤

可以使用双写进行绕过

php改为pphphp

img

img

第十二关

查看源码

img

使用00截断绕过

需要关闭magic_quotes_gpc php版本小于5.3.4

上传php文件开启抓包

改包

img

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

img

第十三关

还是00截断但是 是post传参

需要在二进制中修改

改为1.php+方便查找

img

img

改为00

放包 访问php文件

img

第十四关

制作图片马上传

在cmd输入命令

copy 123.jpg/b + 1.php/a 444.jpg

上传图片马查看路径

img

img

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

img

img

第十五关

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

img

img

第十六关

开启php_exif

img

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

img

第十七关

二次渲染过滤

先上传一个gif

使用winhex对比前后两个gif查找相同的地方插入webshell

img

再次上传

利用文件包含漏洞

img

第十八关

条件竞争

写webshell

<?php fputs(fopen('Tony.php','w'),'<?php phpinfor();?>');?>

上传抓包

img

img

开始攻击不停访问shell.php

第十九关

依旧是条件竞争

但需要图片马

上传图片马后操作同18关

第二十关

把php木马上传抓包

img

访问upload-19.php

127.0.0.1/upload/upload/upload-19.php

img

上传成功

第二十一关

上传木马改包

image-20211121215448681

img