环境准备
靶场 | upload-labs-env-win-0.1 |
环境 | windows |
靶场描述
靶场攻略
Pass-01
1.上传一句话木马
发现有类型限制
2.上传图片木马
抓包
3.修改后缀
将png修改为php.
成功上传,
4.查找文件地址
5.中国蚁剑连接
6.成功
7.源码分析
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;
}
}
代码只过滤了文件上传的类型,但没有过滤文件的内容,这个和dvwa中级靶场有异曲同工之处。所以使用图片木马配合中国蚁剑连接
温馨提示:记得删除上传文件,否则会影响下面关卡。
Pass-02
1.我们上传一句话木马
测试(目的:让他提示上传什么类型文件)
发现没有提示
2.使用图片木马测试
图片木马可以(老规矩,抓包改后缀试试)
3.修改后缀发包,发现成功。
4,拿到地址
../upload/shell.php
5.中国蚁剑连接
6.成功
7.源码分析
$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.'文件夹不存在,请手工创建!';
}
}
文件只允许 image/jpeg,image/png,pload_file,image/gif类型上传,所以使用图片木马还是可行的,图片依旧是image/png类型,进入循环。
Pass-03
1.测试
上传一句话木马,测试可以上传什么类型文件
2.尝试图片木马
3.试试改后缀
发现不可以了
4.我们试试双后缀名
修改shell.php为shell.php.png.
5.查看地址
发现上传内容生成新的文件了
6.我们尝试php5
创建php5木马
7.上传成功
分析代码,进行黑名单验证,但是黑名单不全,可以使用php3、php5、phtml等等绕过
但是因为靶场是用phpstudy环境搭建的,要进去修改一下配置文件改一下
httpd.conf
文件里的#AddType application/x-httpd-php .php .phtml
为AddType application/x-httpd-php .php .phtml .php5 .php3
记得去掉#号。
8.蚁剑连接
9.成功
10.代码分析
$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
if (file_exists(UPLOAD_PATH)) {
$deny_ext = array('.asp','.aspx','.php','.jsp');
$file_name = trim($_FILES['upload_file']['name']);
$file_name = deldot($file_name);//删除文件名末尾的点
$file_ext = strrchr($file_name, '.');
$file_ext = strtolower($file_ext); //转换为小写
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
$file_ext = trim($file_ext); //收尾去空
if(!in_array($file_ext, $deny_ext)) {
$temp_file = $_FILES['upload_file']['tmp_name'];
$img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;
if (move_uploaded_file($temp_file,$img_path)) {
$is_upload = true;
} else {
$msg = '上传出错!';
}
} else {
$msg = '不允许上传.asp,.aspx,.php,.jsp后缀文件!';
}
} else {
$msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
}
}
分析代码,进行黑名单验证,但是黑名单不全,可以使用php3、php5、phtml等等绕过
各位大佬,还在学习,下面的慢慢来。