网络安全靶场
关注回复“靶场”领取资源
Pass-04
丨本pass禁止上传
.php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.pHp|.pHp5|.pHp4|.pHp3|.pHp2|pHp1|.Html|.Htm|.pHtml|.jsp|.jspa|.jspx|.jsw|.jsv|.jspf|.jtml|.jSp|.jSpx|.jSpa|.jSw|.jSv|.jSpf|.jHtml|.asp|.aspx|.asa|.asax|.ascx|.ashx|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|.swf 后缀文件!
后端源码
$is_upload =
false
;
$msg = null;
if
(isset($_POST[
'submit'
])) {
if
(file_exists(UPLOAD_PATH)) {
$deny_ext =
array
(
".php"
,
".php5"
,
".php4"
,
".php3"
,
".php2"
,
".php1"
,
".html"
,
".htm"
,
".phtml"
,
".pht"
,
".pHp"
,
".pHp5"
,
".pHp4"
,
".pHp3"
,
".pHp2"
,
".pHp1"
,
".Html"
,
".Htm"
,
".pHtml"
,
".jsp"
,
".jspa"
,
".jspx"
,
".jsw"
,
".jsv"
,
".jspf"
,
".jtml"
,
".jSp"
,
".jSpx"
,
".jSpa"
,
".jSw"
,
".jSv"
,
".jSpf"
,
".jHtml"
,
".asp"
,
".aspx"
,
".asa"
,
".asax"
,
".ascx"
,
".ashx"
,
".asmx"
,
".cer"
,
".aSp"
,
".aSpx"
,
".aSa"
,
".aSax"
,
".aScx"
,
".aShx"
,
".aSmx"
,
".cEr"
,
".sWf"
,
".swf"
,
".ini"
);
$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
.'
/
'.$file_name;
if (move_uploaded_file($temp_file, $img_path)) {
$is_upload = true;
} else {
$msg = '
上传出错!
';
}
} else {
$msg = '
此文件不允许上传!
';
}
} else {
$msg = UPLOAD_PATH . '
文件夹不存在,请手工创建!
';
}
}
步骤
本关卡虽然禁止了大部分的扩展名,但是唯独没有禁止 htaccess,因此我们可以先上传一个htaccess配置文件。
“
1
先上传 一个 x.htaccess,用bp抓包再把名字改成 .htaccess,内容如下:
SetHandler application/x-httpd-php
它的作用是,将当前文件夹里任何文件都以php的方式解析。
“
2
上传任意文件名的php木马
例:上传一个shell.abc,可以被当做php脚本解析。
Pass-05
丨上传目录存在php文件(readme.php)
后端源码
$is_upload =
false
;
$msg = null;
if
(isset($_POST[
'submit'
])) {
if
(file_exists(UPLOAD_PATH)) {
$deny_ext =
array
(
".php"
,
".php5"
,
".php4"
,
".php3"
,
".php2"
,
".html"
,
".htm"
,
".phtml"
,
".pht"
,
".pHp"
,
".pHp5"
,
".pHp4"
,
".pHp3"
,
".pHp2"
,
".Html"
,
".Htm"
,
".pHtml"
,
".jsp"
,
".jspa"
,
".jspx"
,
".jsw"
,
".jsv"
,
".jspf"
,
".jtml"
,
".jSp"
,
".jSpx"
,
".jSpa"
,
".jSw"
,
".jSv"
,
".jSpf"
,
".jHtml"
,
".asp"
,
".aspx"
,
".asa"
,
".asax"
,
".ascx"
,
".ashx"
,
".asmx"
,
".cer"
,
".aSp"
,
".aSpx"
,
".aSa"
,
".aSax"
,
".aScx"
,
".aShx"
,
".aSmx"
,
".cEr"
,
".sWf"
,
".swf"
,
".htaccess"
);
$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
.'
/
'.$file_name;
if (move_uploaded_file($temp_file, $img_path)) {
$is_upload = true;
} else {
$msg = '
上传出错!
';
}
} else {
$msg = '
此文件类型不允许上传!
';
}
} else {
$msg = UPLOAD_PATH . '
文件夹不存在,请手工创建!
';
}
}
步骤
知识补充:.user.ini类似于.htaccess但是应用范围更广。
只要是以fastcgi运行的php都可以用它来动态的局部修改php.ini中的配置
“
1
上传一个文件 `.user.ini`,内容为
auto_prepend_file=a.jpg
它的作用为,当前目录下的所有php文件都会自动包含一个名为 a.jpg 的文件
“
2
上传一个名为 a.jpg 的图片马
“
3
访问 readme.php ,就会自动包含刚刚上传的图片马
Pass-06
丨本pass禁止上传
.php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.pHp|.pHp5|.pHp4|.pHp3|.pHp2|pHp1|.Html|.Htm|.pHtml|.jsp|.jspa|.jspx|.jsw|.jsv|.jspf|.jtml|.jSp|.jSpx|.jSpa|.jSw|.jSv|.jSpf|.jHtml|.asp|.aspx|.asa|.asax|.ascx|.ashx|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|.swf|.htaccess 后缀文件!
后端源码
$is_upload =
false
;
$msg = null;
if
(isset($_POST[
'submit'
])) {
if
(file_exists(UPLOAD_PATH)) {
$deny_ext =
array
(
".php"
,
".php5"
,
".php4"
,
".php3"
,
".php2"
,
".html"
,
".htm"
,
".phtml"
,
".pht"
,
".pHp"
,
".pHp5"
,
".pHp4"
,
".pHp3"
,
".pHp2"
,
".Html"
,
".Htm"
,
".pHtml"
,
".jsp"
,
".jspa"
,
".jspx"
,
".jsw"
,
".jsv"
,
".jspf"
,
".jtml"
,
".jSp"
,
".jSpx"
,
".jSpa"
,
".jSw"
,
".jSv"
,
".jSpf"
,
".jHtml"
,
".asp"
,
".aspx"
,
".asa"
,
".asax"
,
".ascx"
,
".ashx"
,
".asmx"
,
".cer"
,
".aSp"
,
".aSpx"
,
".aSa"
,
".aSax"
,
".aScx"
,
".aShx"
,
".aSmx"
,
".cEr"
,
".sWf"
,
".swf"
,
".htaccess"
,
".ini"
);
$file_name = trim($_FILES[
'upload_file'
][
'name'
]);
$file_name = deldot($file_name);
//删除文件名末尾的点
$file_ext =
strrchr
($file_name,
'.'
);
$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 = '
此文件类型不允许上传!
';
}
} else {
$msg = UPLOAD_PATH . '
文件夹不存在,请手工创建!
';
}
}
步骤
大小写绕过,上传 x.phP 即可
长风实验室发布、转载的文章中所涉及的技术、思路和工具,仅供以网络安全为目的的学习交流使用,不得用作它途。部分文章来源于网络,如有侵权请联系删除。
END
原文始发于微信公众号(长风实验室):靶场攻略 | upload-labs 靶场通关教程 Pass04-06
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论