文章目录
- 前言
- 一、回顾靶场第五关
- 二、靶场第六关需要了解的知识点
- 1、window系统大小写不敏感
- 2、linux系统大小写敏感
- 三、靶场第六关通关思路
- 1.看源代码
- 2.通过bp进行大小写绕过
- 总结
前言
此文章只用于学习和反思巩固文件上传漏洞知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的网站做渗透测试!!!
一、回顾靶场第五关
第五关是通过利用win系统命名文件后缀名的特性来绕过黑名单达到绕过。像1.php.文件是可以成功上传到服务器的,而且被window系统命名为1.php文件
二、靶场第六关需要了解的知识点
为什么会有大小写绕过呢,是因为程序员在过滤敏感文件后缀名的时候没有特意过滤大小写,然后window系统特性又是不区分大小写的即1.Php文件也是1.php文件。注意Linux系统是对大小写敏感的,1.Php和1.php是两个不同的文件。
这里我们可以示范一下
1、window系统大小写不敏感
先创建一个1.txt文件
然后重命名为1.Txt然后报存会发现文件依旧是1.txt文件。
我们在cmd也可以测试
首先创建一个1.txt文件内容为123
然后在创建1.Txt文件内容为66666
会发现并没有1.Txt文件生成,而66666出现在了1.txt文件中。这也是能看出window系统对大小写不敏感
2、linux系统大小写敏感
同样在linux创建一个1.txt文件和1.Txt文件,内容分别为123和456,看看会怎么样(如图所示)
我们先创建一个新的txt文件夹便于实验。
先在1.txt文件写入123,然后再在1.Txt文件写入456,如果Linux对大小写不敏感的话,那么呈现的应该就是只有一个1.txt文件,并且内容是123456
实验发现是创建了两个不同的文件,内容分别是123和456。所以可见linux系统对大小写是敏感的。
三、靶场第六关通关思路
- 1.看源代码
- 2.通过bp进行大小写绕过
1.看源代码
$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 . '文件夹不存在,请手工创建!';
}
}
细心发现此关同上一关不同的地方就是它没有过滤大小写,刚好我的服务器是win系统,所以可以进行大小写绕过。
2.通过bp进行大小写绕过
抓包然后修改文件后缀名为1.Php。如果是Linux系统为攻击机,那么也可以直接建一个1.Php文件直接上传就行。
把1.php文件改为1.Php文件然后发包,发现文件成功上传。
发现上传成功,如果是上传一句话木马就可以连接菜刀了。
总结
这一关是利用win特性,还有没有过滤大小写来进行绕过。此文章是小白自己为了巩固文件上传漏洞而写的,大佬路过请多指教!