upload-labs搭建
upload-labs是一个练习文件上传的靶场
我们需要先安装中间件和PHP,推荐使用小皮面板,如何安装使用见
upload-labs下载:https://gitcode.net/mirrors/c0ny1/upload-labs/-/archive/master/upload-labs-master.zip
解压拷贝到WWW目录即可使用
Pass-1 javascript检测
1.创建一个info.php内容为phpinfo();
上传info.php
必须使用后缀名为.jpg|.png|.gif图片才可以上传,猜测是javascript禁用,我们使用浏览器自带的javascript禁用功能
F12打开控制台,右上角的三个小点,设置,往下拉就可以看到禁用javascript
禁用后直接上传文件,上传成功
这里由于我们不是真正的图片,所以显示不出来,上传成功后,文件上传到了upload根目录下:http://192.168.84.232/upload-labs-master/upload/info.php
2.可以使用burpusite抓包更改后缀名
我们先更改文件名为图片jpg/png后缀
上传图片使用burpusite抓包,将jpg/png后缀改为php,修改后 Forward 转发即上传成功
这里已经上传成功,因为我们上传的本来就不是图片,可以访问文件测试
3.将页面保存,删除javascript内容,将action提交地址改为目标地址
首先我们 Ctrl + s保存名为Pass3.html文件,这里我们保存到root目录
修改Pass3.html将javascript内容删除,命令vim Pass3.html
找到上传区,在form标签中加入action提交地址
修改前:
修改后:
那么提交地址如何获取到呢?我们真正上传一个图片,在上传的同时浏览器控制台,网络(Network),上传得到提交地址
修改后,使用浏览器打开Pass3.htm,命令firefox Pass3.html
会看到使用的是file协议打开,直接上传我们的info.php,即可上传成功
上传成功,访问测试http://192.168.84.232/upload-labs-master/upload/info.php
Pass-2
源代码如下:
$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.'文件夹不存在,请手工创建!';
}
}