uoload-labs靶场文件上传漏洞通关之路(1)

靶场简介

upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。靶场地址:https://github.com/c0ny1/upload-labs
搭建环境为winodws 2003 + phpstudy2018(php5.2.17+apache) + 源码,只需将源码放置在www目录,在配置下站点域名管理,过程十分简单。唯一要注意的点就是80端口冲突时,可以改用其他空闲的端口,或者将iis服务(占用80端口)关闭掉。

关于burpsuite光标对不准问题

在使用burp抓包时遇到光标对不准的问题,想选中改掉文件名后缀结果光标一直在文字后面。经百度得知是分辨率的问题,我的拯救者是2k屏设置的是125%缩放,而burp并不支持就会导致文字错位。解决方案是直接把字体调大,我调到16pt。至于其他的该启动参数,设置javaw.exe支持高分辨率,我试了都不太行。

第一关-前端js绕过

第一关看源码可知网站通过checkfile函数,将上传的php后缀的文件进行了过滤,并且仅仅是在前端进行了过滤。前端JS绕过方式主要有三种:
1.修改html源码绕过。下载html源代码,将.php加入到允许上传的文件类型或者直接删除校验函数,然后在form元素中添加action参数指向要上传的地址即可。
2.在线修改js绕过。F12直接修改js,没跑通。
3.burp修改数据包绕过。该题仅有前端校验,那么我们上传个jpg,然后通过burp抓包修改为php即可。

第二关-MIME

根据第二关提示可知这关是在服务端对数据包的MIME进行检查。
后端通过$_FILES['userfile']['type']获取到的MIME信息进行文件格式的过滤,$_FILES指的是一个预定义的数组,用来获取通过POST方法上传文件的相关信息,包括文件的原名称、文件的MIME类型、已上传文件的大小等,其中$_FILES['userfile']['type']获取到的是上传文件的 MIME 类型,常见的有image/gif、image/jpeg。

在本题中我们只需将上传的 php 脚本文件的 Content-Type 修改为 image/jpeg 即可。后端实现过滤源代码如下:

if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif'))

第三关-


uoload-labs靶场文件上传漏洞通关之路(1)
https://www.yeyusec.com/2023/09/10/安全笔记/靶场学习/uoload-labs靶场文件上传漏洞通关之路(1)/
作者
yeyusec
发布于
2023年9月10日
许可协议