考点精讲
记忆技巧
绕过四件套:MIME 改、大小写、双写、%00 截断
白名单(只放行已知)比黑名单(只拦已知)更安全
白名单(只放行已知)比黑名单(只拦已知)更安全
常见误区
- 以为黑名单能完全拦截——大小写/双写即可绕过
- 忽略 MIME 类型伪造这一简单手法
- 忽略图片马配合解析漏洞的利用方式
真题思路
- 【示例】 上传校验使用黑名单、拦截了 .php,下列文件名最可能绕过该黑名单的是()
shell.php shell.phtml shell.txt shell.jpg
答案:B
解析:黑名单只拦了 .php,phtml 是 PHP 可执行后缀,未被拦截时可能被服务器解析执行,B 最可能绕过。A 被拦;C、D 通常不可执行(除非配合解析漏洞)。
常见问题
Q:%00 截断是什么?
A:利用空字节 %00 截断文件名,使服务器在校验时看到合法后缀、保存时把 %00 之后的内容截掉,从而写入脚本文件(受版本与配置影响,现代版本多已修复)。
Q:为什么白名单比黑名单更安全?
A:黑名单只拦已知的危险类型,攻击者可通过大小写、双写、其它后缀等绕过;白名单只放行已知的安全类型,未在名单内的一律拒绝,更难绕过,因此更安全。
Q:.htaccess 在绕过中怎么用?
A:.htaccess 是 Apache 的配置文件,攻击者上传自定义的 .htaccess 覆盖解析规则,如让某类文件(如图片)被当作 PHP 执行,从而配合图片马 getshell。
相关知识
教材出处:第4章 Web 漏洞 文件上传绕过手法