upload_labs靶场

关卡1(前端绕过)

攻略

上传php文件,提示允许的上传类型为jpg、png、gif

打开抓包软件,并没有上传错误的这条报文记录,可判断:上传文件的验证在前端

#制作符合前端要求的一句话木马


上传后缀名为jpg,内容为一句话木马的文件,并抓包修改后缀名



通过复制图片地址,确定上传后的文件路径


通过木马执行命令

此次管卡犯的错误

PHP一句话木马

  1. eval没有加@
    查了资料后@在PHP的意思是:屏蔽错误信息的提示
  2. 代码结尾未写分号

执行木马的路径


我错在获取路径后的木马文件删掉,输入参数


关卡2(文件类型绕过)

攻略

使用关卡1的方法

.傻眼了,直接成功了,

分析一波


正常流程是上传.php文件,抓到包后,修改content-type类型。

关卡1和关卡2有细微差别

  • 关卡1通过前端验证-根据后缀名
  • 关卡2通过后端验证-根据MINI类型

过程分析

过了关卡1和2的方法,概括来说就是实际是PHP文件以JPG的壳去上传,当抓包软件抓到包的那一刻,恢复本来样貌。

关卡1

  • JPG的壳是为了过前端的检测程序(文件后缀名)
  • 恢复PHP的真身,是为了执行一句话木马

关卡2

  • JPG的壳是为了content-type以image/jpg的状态出现
  • 恢复PHP的真身,是为了执行一句话木马
    当然关卡2可以直接上传php文件抓到包的时候,修改content-type的类型

关卡3(其他可解析文件后缀名)

攻略

使用第二关的方法(MINI类型绕过)



使用其他可解析的后缀名来绕过

我们通过用绕过MINI类型的方法尝试后,根据页面的提示信息可知:asp、aspx、php、jsp结尾的文件不可以上传
由于我们的目标网站的后端语言是php,所以我们用其他可解析的php文件名来尝试绕过

木马利用


想不明白,为什么不成功呢?什么情况。

当找到原因后的马后炮分析

当执行上传的文件后,返回页面的是源代码,表名代码并没有被服务器执行
就效果而言,很像在本地打开一个php文件,没有经过服务器的效果,而根据流程我们是经过服务器的,是否可以说明:文件没有被服务器识别

再次利用木马


再次失败

再次重新上传后,再次利用


依然不成功

修改PHP版本,后再次上传


哭了,还是不行,最后在解决吧

问题说明

php5不执行的原因

  • 在Apache路径下的conf中的httpd.conf文件中添加命令AddType application/x-httpd-php .php .phtml .phps .php5 .pht,使Apache可以支持php文件解析名

关卡4(.htacess文件)

攻略

先上传一个PHP文件,看反馈



通过页面结果:此文件不允许上传,可知是黑名单绕过

想想绕过黑名单的方法有哪些,一个一个试

  • 黑名单绕过方法主要是解析后缀名、windows操作系统的一些特性

将常用的关于PHP文件解析后缀名,依次测试

借助BurpSuite工具的Intruder功能,测试



上述过程中,已经验证了可解析的后缀名和大小写

黑名单还有什么可绕过的方法?windows下的xxx.php::$DATA

Apache下的.htacess绕过

准备对应的.hrcsess文件

<FilesMatch "mm4.jpg">setHandler application/x-httpd-php </FilesMatch>

上传.htacess文件


代表上传成功

上传后缀名为jpg,内容为php代码的文件

上传成功

利用一句话木马


没利用成功

补充说明

这关需要在Apache下conf文件夹下的httpd.conf文件中的AllowOverride从状态None改为All,具体如下图所示


关卡5(php后加. .)

攻略

先上传个PHP文件,看网站什么反应


可以得出结论:黑名单绕过

PHP可解析后缀名,大小写


再次失败

windows下的xxx.php::$DATA


再次失败

windows下的某些特殊字符


响应包怪怪的,我在后台看了下上传成功的文件,发现成公式成功了,但是也编码了

犯了个小错误,

应该取消掉编码的选项

再次用在后缀添加某些符号来绕过

依然失败,查看教程后发现此关考察的是大小写绕过
之前PHP可解析后缀名里最然有pHp等参杂大小写,但依然算在PHP可解析后缀名

用Php来尝试


通过页面显示,大小写也是行不通

继续在结尾加一些字符来绕过(取消掉BurpSuite的编码功能)


考察的也不是 windows操作系统的特殊字符

代码不严谨的测试-双写后缀名

代码不言纪念馆-双写特殊字符

..

双空格

特殊字符混合搭配

查了资料得知,要过此关在后缀加. .
这样做是因为,这关的代码,考虑到去除空格,字母全转换为小写

将mm5.php. .提交后在上述代码走一波后为mm5.php.
mm5.php.是可以绕过对方的黑名单范围

木马利用


关卡6(大小写绕过)

攻略

上传php文件看效果


通过结果,知道是黑名单的防护机制

先尝试大小写


上传成功

木马利用

有点问题~

补充说明

pHp算其他可解析后缀名

第7关(特殊字符-空格)

攻略

上传PHP文件

大小写绕过


未成功

在结尾加字符


上传成功,我们在服务器上查看,发现只有加空格的可以成功执行

木马利用


关卡8(特殊字符.)

攻略

上传PHP文件

尝试大小写

没成功

尝试特殊字符


成功

木马利用


关卡9(xx.php::$DATA)

攻略

上传PHP文件


通过结果可知是黑名单限制

大小写

没成功

特殊字符

没成功

其他可解析后缀名

没成功

.htaccess文件

没成功

xx.php::$DATA


上传成功

木马利用


关卡10(. .)

攻略

上传PHP文件

没成功
通过结果可知,是黑名单机制

大小写绕过

没成功

特殊字符

没成功

其他可解析后缀名

没成功

.htaccess

没成功

xx.php::$DATA

没成功

. .


与第五关几乎一样

木马利用

关卡11(双写后缀名)

攻略

上传PHP文件

上传成功,但没有任何意义,因为脚本文件不可执行

大小写绕过

上传成功,但没有任何意义,因为脚本文件不可执行

双写后缀名绕过

这两次绕过结果的共同特征是,没有后缀名。
查别人的通关教程,知道这关是用str_ireplace()函数将匹配到的字符替换为空
所以破它的方案是:在原有的php的某一位置嵌套一个php,如pphphp,就可以绕过防护机制

关卡12(00截断,GET型)

攻略

上传PHP文件

没成功,但是终于不是黑名单限制了

白名单限制

上传.jpg后缀的PHP代码文件

没成功

MIME类型绕过

没成功

00截断

木马利用


关卡13(00截断,POST型)

攻略

上传PHP文件

没成功,通过结果得知是,白名单机制

上传后缀名为jpg,内容为php代码

没成功

00截断

没成功

00截断(post)

木马利用


管卡14()

攻略

上传PHP文件


上传失败,但是挂卡有提示,可得知是图片马

制作图片马


上传图片马


无法利用

重新分析

上传PHP文件后,既没有报不允许xxxx也没有报允许xxxx。只显示文件未知
于是从文件内容检测绕过开始

文件头检测

下载一张jpg文件,用Winhex打开,得到FFD8FF对应的是:ÿØÿ


没成功,可能我上传的头有问题

用gif的文件头尝试(GIF89A)

上传成功

木马利用

利用的话,的结合文件包含


关卡15()

攻略

上传PHP文件

没成功
但根据返回结果,判断为检测内容

上传.gif结尾,内容为php代码的文件

没成功

替换文件头


上传成功,但暂时无法利用


关卡16()

攻略

上传PHP文件

没成功

上传.gif结尾,内容为php代码的文件

没成功

替换文件头

没成功

图片马

没成功

在php.ini打开extension=php_exif.dll这个服务

上传图片马

上传成功


关卡17()

攻略

上传PHP文件

没成功

上传图片马

成功上传
但是图片里的PHP代码,不见了

经过工具https://github.com/RickGray/Bypass-PHP-GD-Process-To-RCE处理后的gif文件,php代码存在


关卡18

攻略

上传PHP文件

上传图片马

参考文章

posted @ 2021-08-20 22:55  ceiling~  阅读(79)  评论(0编辑  收藏  举报