链接:https://pan.baidu.com/s/1AD3eaAOrAqJDd0c5UTQZNw
提取码:9rsd
接下来我会从php文件上传如何用开发写起,同时希望渗透测试的小白们,不要忽略开发,只有懂开发,才能更好的进行测试。
1.enctype=‘appliaction/x-www-form-urlencoded’,默认值(ASCII编码)
2.enctype=‘multipart/form-data’,表示不对数据进行编码(二进制不编码)
3.enctype=‘text/plain’,只对空格进行编码,其他不编码
//查看post提交的数据
var_dump($_POST);
echo "
";
//查看文件数据
var_dump($_FILES);
//取出文件操作
$file = $_FILES['file'];
//简单判断
if($file['error']==0) {
//移动文件
move_uploaded_file($file['tmp_name'],'目标文件地址');
//move_uploaded_file($file['tmp_name'],'D:\PhpStudy20180211\PHPTutorial\WWW\WWW\upload\upload\upload'.$file['name'] );
}
通过这段代码,就会将上传的文件,移动指定位置。
//文件后缀进行检测
$allowed = array(
"gif",
"jpeg",
"jpg",
"png",
"php",
"phtml",
);
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if(in_array($extension, $allowed)){ }
//文件类型进行检测
if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) || ($_FILES["file"]["type"] == "application/octet-stream")){}
//有效性检测
if(!isset($file['error'])){}
//路径判断
if(!is_dir($path)){}
//文件大小判断
if($file['size']>$size){}
其中对文件后缀、文件类型、文件有效性、文件路径、文件大小进行检测
文件上传漏洞有各种姿势的绕过,各种奇淫技巧,下面我将详细介绍
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;
}
}
1.我们可以将一句话木马1.php,改名为1.jpg
2.打开burpsuit进行抓包,并且上传1.jpg
3.将bp抓到的包,上传的文件后缀进行修改,将1.jpg改为1.php
通过上面的步骤,我们就绕过了浏览器前端检测,php一句话木马上传到了服务器,我们访问我们上传的文件
4.通过蚁剑进行链接即可
1.服务器端检测代码
2.于是我们有两种想法:
我们尝试第二种方法
1.我们可以使用截断绕过(上传一个1.php%00.jpg)这样就可以绕过检测
php %00截断,在php 5.3.4中php修复了0字符,但是在之前的版本中00在php中危害较大。
1.对于黑名单绕过,其实比较简单,我们可以上传PhP或者PHP这写不在黑名单里的,就可以绕过文件检测
2.将1.php改为1.PhP
2.上传成功
3.上传后的大小写绕过的php文件,比如:PHP、PhP等等,是无法执行的,我们还需要将它的名字修改为php才可以
1.制作图片马(copy 1.jpg/a + 1.php/b 2.jpg)
2.上传图片马
2.图片马无法直接连接执行,所以我们不能直接使用,所以要配合其他漏洞使用
3.我们在当前文件夹中,发现了文件包含的代码include.php
4.使用文件包含漏洞,使得include.php解析上传图片马
http://localhost/WWW/upload2/upload2/Pass-14/include.php?file=4220200601214152.png
5.蚁剑直接连接就行