后缀名:黑名单、白名单
l 黑名单:明确不让上传的格式后缀,比如asp、php、jsp、aspx、cgi、war等,但是黑名单易被绕过,比如上传ph5、phtml等。
l 白名单:明确可以上传的格式后缀,比如jpg、png、zip、rar、gif等,推荐白名单。
文件类型:MIME信息(MIME 类型 | 菜鸟教程 (runoob.com))
Content-type字段校验,可以通过抓包改包方式绕过。
文件头:内容头信息
每种类型的文件都有自己固定的文件头信息,比如GIF89a是gif图片的文件头信息,可以通过手动在脚本文件前面增减文件头的方式绕过。
Windows特性
l Windows下文件名不区分大小写,linux下文件名区分大小写;
l Windows下NTFS特征,导致上传文件xxx.php::$DATA=xxx.php;
l Windows下文件名结尾加入“.”、“空格”、“<”、“>”、“>>>”、“0x81-0xff”等字符,最终生成的文件均被Windows忽略。
案例展示:uploadlabs关卡分析
下载:https://github.com/c0ny1/upload-labs
l 案例1:$_FILES[‘upfile’]访问文件的有关信息
l 案例2:Pass-02 MIME-Type验证
l 案例3:Pass-3 黑名单绕过 特殊解析后缀
l 案例4:Pass-4 .htaccess绕过
l 案例5:Pass-6 大小写绕过
l 案例6:Pass-7 后缀名空格绕过
l 案例7:Pass-8 点绕过
l 案例8:Pass-9 ::$DATA绕过
l 案例9:Pass-10 点+空格+点绕过(循环递归过滤)
l 案例10:Pass-11 双写绕过
l 案例11:Pass-12 %00截断 GET请求
l 案例12:Pass-13 %00截断 POST请求
Tips:GET优先于POST;搭建upload靶场时php环境尽量选低,要不然会出现访问木马文件出现下载的现象。
案列详解:https://blog.csdn.net/qq_50854790/article/details/122324209