web32 文件上传 php白名单

image.png

先看下源码(源码没提供, 这只能由果推因了)


function global_filter(){
    $type =  $_SERVER["CONTENT_TYPE"];
    if (strpos($type,"multipart/form-data") !== False){  # 这里对multipart/form-data 做了判断 不能为它 故大写绕过。

        $file_ext =  substr($_FILES["file"]["name"], strrpos($_FILES["file"]["name"], '.')+1);
        $file_ext = strtolower($file_ext);
        if (stripos($file_ext,"php") !== False){
            die("Invalid File<br />");
        }
    }
}
?>



<?php

global_filter();
if ((stripos($_FILES["file"]["type"],'image')!== False) && ($_FILES["file"]["size"] < 10*1024*1024)){
    if ($_FILES["file"]["error"] == 0){
        $file_ext =  substr($_FILES["file"]["name"], strrpos($_FILES["file"]["name"], '.')+1);
        $file_ext = strtolower($file_ext);

        $allowexts = array('jpg','gif','jpeg','bmp','php4'); # 这里可以看到白名单。 里面有php4 有点扯淡


        if(!in_array($file_ext,$allowexts)){
            die("give me a image file not a php");
        }
        $_FILES["file"]["name"]="bugku".date('dHis')."_".rand(1000,9999).".".$file_ext;

        if (file_exists("upload/" . $_FILES["file"]["name"])){
            echo $_FILES["file"]["name"] . " already exists. <br />";
        }
        else{
            if (!file_exists('./upload/')){
                mkdir ("./upload/");
                system("chmod 777 /var/www/html/upload");
            }
            move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $_FILES["file"]["name"]);
                echo "Upload Success<br>";
                $filepath = "upload/" . $_FILES["file"]["name"];
            echo "Stored in: " ."<a href='" . $filepath . "' target='_blank'>" . $filepath . "<br />";
        }
    }
}
else{
    if($_FILES["file"]["size"] > 0){
        echo "You was catched! :) <br />";
    }
}
?>
</body>
</html>


最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容