upload-labs靶场通关解密

upload-labs靶场通关解密

文件上传常见验证:

后缀名:黑名单、白名单
文件类型:MIME信息
文件头:内容头信息

一句话图片马制作

copy 1.jpg /b + 2.php /a 3.jpg

靶场全部都是图片上的验证和绕过

如下图的后端

upload-labs靶场通关解密_第1张图片

每关删除后我都会删除上传成功的文件

第一关

本关考的内容是本地文件检测,我们只要按F12将验证删除就ok了
upload-labs靶场通关解密_第2张图片
我们将return checkFile()函数删除,再上传php文件上传成功。
upload-labs靶场通关解密_第3张图片

第二关

本关考的内容是服务器检测
我们继续上传php文件,进行抓包
upload-labs靶场通关解密_第4张图片
我们看到其中有对上传文件类型的描述Content-Type
我们在网上查询到jpg的类型为image/jpeg
在这里插入图片描述
发包,显示上传成功了,后台查看,文件存在。
在这里插入图片描述

第三关

本关考的是后缀名
我们查看源码,发现它禁止了‘.asp’,‘.aspx’,‘.php’,'.jsp’文件的上传,但是我们可以上传.php3 .php4等后缀的文件,这些后缀依然可以被当作php执行
upload-labs靶场通关解密_第5张图片
上传成功,查看后台文件存在,并且文件被改名了。
upload-labs靶场通关解密_第6张图片
我们再看一下源码为什么改名,下面这行代码的意思是将文件重命名为时间+随机数.文件后缀的文件
在这里插入图片描述

第四关

本关考的是对低版本php<5.3的.htaccess

.htaccess主要的作用有:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等。主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等。

我们看到源码没有对.htaccess后缀的文件进行黑名单限制
在这里插入图片描述
因此我们直接上传一个.htaccess文件,内容如下
upload-labs靶场通关解密_第7张图片

<FilesMatch "3">
# 3为文件名
SetHandler application/x-httpd-php
</FilesMatch>

然后我们上传一个图片马3.jpg,然后访问图片,马成功
upload-labs靶场通关解密_第8张图片

注意

.htaccess文件不能起名字,他就是.htaccess文件,如果你将他改为4.htaccess或者其他的什么名字是不可以的,无法解析。如果以上操作都弄好了,还是出不来,还是去改phpstudy配置文件,其他选项菜单–打开配置文件—httpd.conf
upload-labs靶场通关解密_第9张图片

第五关

本关是考察双写小数点(.空格.)
所以我们上传6.php. .
upload-labs靶场通关解密_第10张图片
查看后台,上传成功
在这里插入图片描述

第六关

本关是考察大小写
看第六关的代码我们知道,这一关没有强制将大写转换为小写,所以我们可以上传纯大写或者大小写结合的后缀名
我们直接上传5.PHP,发现上传成功
在这里插入图片描述

第七关

本关是考察空格
所以我们上传6.php空格
我们抓包,在文件名后加空格
在这里插入图片描述
查看后台,上传成功
在这里插入图片描述

第八关

本关是考察小数点(小数点没有被取消)
所以我们上传6.php.
upload-labs靶场通关解密_第11张图片

查看后台,上传成功
在这里插入图片描述

第九关

本关是考察::$DATA
我们上传php文件加后缀
upload-labs靶场通关解密_第12张图片
查看后台,上传成功
在这里插入图片描述

第十关

第十关和第五关一样,随便玩

第十一关

本关考察的是双写后缀
查看源码,存在标识后缀就删除
在这里插入图片描述
我们上传6.pphphp

upload-labs靶场通关解密_第13张图片
查看后台,上传成功
upload-labs靶场通关解密_第14张图片

第十二关

本关是白名单考察,只容许上传什么类型的文件,但是上传路径是可以控制的

这次我们要将php版本改为5.3以下哎,并且关闭如下功能
upload-labs靶场通关解密_第15张图片
然后上传图片马进行抓包,进行%00截断
在这里插入图片描述
然后访问图片,上传成功。(我这里上传了两次,第二次用的是4.php)
upload-labs靶场通关解密_第16张图片

第十三关

本关和上一关差不多,只是将get请求换成了post请求
但是post请求需要编码(get会自行解码,post不会自行解码)(我们需要将%00进行编码)
upload-labs靶场通关解密_第17张图片
如下编码
upload-labs靶场通关解密_第18张图片

编码之后跟空格一样
在这里插入图片描述
连接图片
upload-labs靶场通关解密_第19张图片

第十四关

文件包含漏洞
我们上传一个图片马
一句话图片马制作

copy 1.jpg /b + 2.php /a 3.jpg

我们上传后通过文件包含漏洞进行执行
首先正常上传图片马
upload-labs靶场通关解密_第20张图片
我们打开后台查看后台保存的图片信息,复制文件名
在这里插入图片描述
然后我们点开文件包含漏洞,查看函数
upload-labs靶场通关解密_第21张图片

通过函数我们得知,我们需要指定文件地址进行执行,所以我们输入图片位置

?file=upload/后台图片名.jpg

使得图片通过php代码进行执行
upload-labs靶场通关解密_第22张图片

第十五关

查看源码,getimagesize()获取图像信息,如果不是图片信息,那么就不会执行成功
跟十四、十五、十六、十七关都差不多,都是通过不同的函数
上传正常的图片马
在这里插入图片描述

第十六关

exif_imagetype()函数
十四、十五、十六、十七关都差不多,都是通过不同的函数
上传正常的图片马
在这里插入图片描述

第十七关

十四、十五、十六、十七关都差不多,都是通过不同的函数
上传正常的图片马

if((KaTeX parse error: Expected 'EOF', got '&' at position 19: …eext == "jpg") &̲& (filetype==“image/jpeg”)){
if(move_uploaded_file( t m p n a m e , tmpname, tmpname,target_path)){

第十八关

逻辑问题:二次渲染(一般存在于可以保存、删除操作的位置)
imagecreatefromjpeg()函数

目前很多网站都会对用户上传的图片再次压缩、裁剪等渲染操作(如PHP中的imagecreatefromjpeg()等函数),所以普通的图片马都难逃被渲染的悲剧。

正常上传应该先将文件进行修改(重命名),再进行上传渲染,但是本关是先进行上传到服务器,当作临时文件,这个时候渲染文件,重命名、修改保存位置,然后删除,然后在修改的过程就可以访问成功。(正常的话,不断发包,让他某一次没有重命名成功就算成功了)(渲染文件后,一般我们的php代码就会被除去)

所以我们上传一个php脚本进行抓包
upload-labs靶场通关解密_第23张图片
我们将他发给测试器,让他重复发包,线程10,开始攻击
upload-labs靶场通关解密_第24张图片
这时我们访问图片马upload-labs-master/shell.php,是有概率访问到的
我没有访问到,但是在后台文件里面,它存在的那一瞬间我进行了截图,证明注入成功了
在这里插入图片描述

第十九关

跟上一关应该一样,没有测试

第二十关

发现move_uploaded_file()函数中的img_path是由post参数save_name控制的,因此可以在save_name利用00截断绕过,我们上传文件进行抓包
在这里插入图片描述
我们通过%00进行截断绕过
在这里插入图片描述
我们将%00进行编码,上传文件
在这里插入图片描述
查看后台,上传成功
在这里插入图片描述
第二种方法
move_uploaded_file()有这么一个特性,会忽略掉文件末尾的 /.
所以我们抓包修改后缀(上传图片马)
在这里插入图片描述
查看后台,上传成功
在这里插入图片描述

第二十一关

算了,直接上方法,我今天没懂,听懂了再解释

我解释一下它的代码意思
当你点击后
文件的名字加后缀会被获取,然后文件的名字会通过小数点进行分割成数组
正常情况下filename[0]=upload-20 filename[1]=jpg
我们实际上传的情况下filename[0]=upload-20.php/ filename[1]=jpg
因此我们就完美绕过黑白名单检查
接下来不管怎么结合后缀,只要名字不变,后加的后缀都会被/符号除去
所以就保证了文件被执行为php

直接上传图片马,进行抓包,修改成如下包,上传就成功了
upload-labs靶场通关解密_第25张图片

你可能感兴趣的:(渗透测试,web安全)