这个不用多说了,搞起来,推荐看看这个Upload-labs
/user/updateAvatar.php
太不走心了。。。
其实就是在修改用户头像的地方。
先传一个php
上去。
速度太慢了,明显前端限制。
那就改改呗,改完了以后。。。
这里就不试了,直接看源码
include_once('../bwvs_config/sys_config.php');
$uploaddir = '../favicon';
define("File_Max_Size","1024000");
define("File_Min_Size","1024");
if (isset($_POST['submit']) && isset($uploaddir)){
$Avatar_name = $_FILES['upfile']['name'];//获取文件名
$Avatar_type = $_FILES['upfile']['type'];//获取文件类型
$Avatar_size = $_FILES['upfile']['size'];//获取文件大小
$Avatar_ext = strrchr($Avatar_name, '.');//获取文件扩展名
if (Upfile_type($Avatar_type) && FileExt_Cheak($Avatar_ext) && $Avatar_size > File_Min_Size && $Avatar_size < File_Max_Size){
date_default_timezone_set("Asia/Shanghai");
$time = date("Ymdhms");
$Avatar_rand_name = rand(0,100).$time.rand(0,100);
$Avatar_ext = strchr($Avatar_name, ".");
$Avatar_name = "$Avatar_rand_name"."$Avatar_ext";
move_uploaded_file($_FILES['upfile']['tmp_name'], $uploaddir . '/' . $Avatar_name);
echo '文件上传成功,保存于:' . $uploaddir . '/' . $Avatar_name . "\n";
$User_avatar = $uploaddir . '/' . $Avatar_name;
$Sql = "UPDATE dwvs_user_message SET DWVS_user_favicon = '$User_avatar' WHERE DWVS_user_id = '{$_SESSION['user_id']}'";
mysqli_query($connect,$Sql) or die('Mysql error!');
mysqli_close($connect);
$_SESSION['user_favicon'] = $User_avatar;
header('Location: edit.php');
}
else {
echo '图片上传失败!
';
echo '返回';
}
}else {
not_find($_SERVER['PHP_SELF']);
}
?>
有检查文件类型和扩展,还有waf
,继续看
function Upfile_type($str)
{
$File_Type_White_List = array("image/jpg","image/gif","image/png","image/jpeg","image/x-png","image/pjpeg");
if(in_array($str,$File_Type_White_List))
{
return 1;
}
else
{
return 0;
}
}
function FileExt_Cheak($str)
{
$File_Type_Black_List = array('.asp','.asa' ,'.cer', '.jspx',' .jspf','.aspx','.jsp','.php','.php3','.php4','.PHP','.exe','.exee');
if(in_array($str, $File_Type_Black_List)){
return 0;
}else{
return 1;
}
}
做了黑名单,用图片马加上解析漏洞就可以了,另外要大于1KB
小于1MB
。
成功上传,查看头像的地址。
访问一下,应该可以正常解析的,我的apache
是配置了错误解析。。。
傻了,可能是没给写权限,给了权限后,再来一次。
来了,走起。
/bug/file_upload/any_upload.php
/bug/file_upload/upload_js.php
有前端限制,直接就可以了。
/bug/file_upload/upload_mime.php
直接改content-Type
就行了。
传不上去什么鬼。。。看了半天,自己又好了,,服了
/bug/file_upload/upload_name.php
一般起这个名字都是黑名单了,用php3
。。。
只要有对应的解析,都是可以成功的,还是建议做白名单。
/bug/file_upload/upload_content.php
简单一点的用文件头就可以过了,试试看。
不行阿,上图片马。。。
好了,去看看原因,可能真的是人品差,没看出来问题,看来直接加的文件头不得劲。。。