upload-labs通关攻略(更新中)
文件上传漏洞
1.靶场介绍
upload-labs是一个使用php语言编写,专注于文件上传漏洞的靶场。该靶场可以让练习者了解文件上传漏洞的原理、利用方法。
2.环境搭建
1.首先要下载phpstudy,解压安装
phpstudy下载链接:https://www.xp.cn/download.html
2.下载upload-labs源代码
下载链接:https://codeload.github.com/c0ny1/upload-labs/zip/refs/heads/master
将压缩包解压后的文件名改为upload-labs,然后放入phpstudy\www目录下
3.打开phpstudy面板,启动Apache+MySQL
4.在浏览器中输入http://127.0.0.1/upload-labs/
就会打开一下界面,就安装成功了
Pass-01
任务是上传一个webshell到服务器
为了方便观察,这里我们选择上传<?php phpinfo();?>,代码成功执行后显示PHP服务器的配置信息
尝试上传phpinfo.php,发现上传失败
我们点击显示源码或查看提示,发现这一关是使用JavaScript在客户端验证上传的文件类型
function checkFile() { var file = document.getElementsByName('upload_file')[0].value; if (file == null || file == "") { alert("请选择要上传的文件!"); return false; } //定义允许上传的文件类型 var allow_ext = ".jpg|.png|.gif"; //提取上传文件的类型 var ext_name = file.substring(file.lastIndexOf(".")); //判断上传文件类型是否允许上传 if (allow_ext.indexOf(ext_name + "|") == -1) { var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name; alert(errMsg); return false; } }
通关方法:
在浏览器中禁用JavaScript
firefox浏览器按f12调出开发者工具-->调试器-->设置-->禁用JavaScript,重新上传phpinfo.php就可以成功上传了。
在url中输入文件保存的路径
成功执行
Pass-02
点击显示源码跟查看提示可以看出,这一关是通过数据包中的MIME类型验证
$is_upload = false; $msg = null; if (isset($_POST['submit'])) { if (file_exists(UPLOAD_PATH)) { if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) { $temp_file = $_FILES['upload_file']['tmp_name']; $img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name'] if (move_uploaded_file($temp_file, $img_path)) { $is_upload = true; } else { $msg = '上传出错!'; } } else { $msg = '文件类型不正确,请重新上传!'; } } else { $msg = UPLOAD_PATH.'文件夹不存在,请手工创建!'; } }
使用BurpSuite抓包
将Content-Type修改为允许上传的类型,(image/jpeg、image/png、image/gif)选其中一个修改,修改完后即可上传成功。
访问一下,成功执行
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
文章目录
请登录/注册后在FreeBuf发布内容哦