文件上传的常见验证
后缀名的黑白名单
黑名单:明确哪些文件是不允许上传的,比如asp php jsp aspx cgi war等等。
白名单:明确可以上传的文件,比如jpg png zip rar gif
文件类型:MIME信息
浏览器中的header中有content-type,这就是MIME信息
文件头:内容头信息
文件的头信息,用于指明文件是什么格式
uploads过关记录
第一关:前端判断注释掉过关
第二关:修改MIME过关
第三关:上传php的其他格式来绕过
第四关:.htaccess绕过,只有apache能绕过。.htaccess会将指定名字的文件按照指定的格式进行解析
第五关:大小写切换
第六关:大小写+文件末尾加个空格就绕过了
第七关::: D A T A 只 能 是 p h p + w i n d o w s 比 如 p h p : : DATA 只能是php+windows 比如php:: DATA只能是php+windows比如php::DATA
第八关:也是和黑名单相关的
第九关:a.php. .进行绕过
第十关:pphphp直接就能绕过
第十一关:白名单机制进行了限制,%00截断进行绕过。%00是在地址上的,0x00一般是在文件命名上的。%00截断需要apache版本小于5.3
第十二关:0x00截断
tips:get会自动解码 posthi自动编码
第十三关:使用文件包含漏洞,在图片中写入后门代码直接运行代码
第十四关:十四关也是文件包含漏洞
第十五关:还是文件包含漏洞
第十六关:还是文件包含漏洞
第十七关:二次渲染的绕过
第十八关:条件竞争绕过,在重命名的过程中访问最原始的文件来防止原始文件被移动或者删除,从而留下webshell
第十九关:%00截断配合解析漏洞或者目录命名方式绕过
第二十关:数组接受问题,首先是改用户名,然后