文件上传漏洞

文件上传漏洞
FLYFISH文章:
文件上传漏洞 (上传知识点、题型总结大全-upload靶场全解)_upload靶场题型-CSDN博客
核心目的
- 上传Webshell(如一句话木马)
- 典型场景:上传一个PHP文件(如
<?php @eval($_POST['cmd']);?>),利用蚁剑、菜刀等工具连接,从而执行任意命令、读取文件或提权。 - 适用条件:服务器需能解析该文件(如PHP环境),且上传后的文件路径已知、权限可执行。
- 典型场景:上传一个PHP文件(如
- 其他攻击形式
- 服务端解析漏洞:例如利用
.jpg文件被解析为PHP(Apache解析漏洞),即使不直接上传PHP文件也可执行代码。 - 覆盖关键文件:比如上传恶意
.htaccess覆盖配置,或替换系统文件破坏服务。 - 钓鱼攻击:上传伪造的HTML/脚本文件,诱导用户触发XSS或窃取信息。
- 拒绝服务(DoS):上传超大文件消耗服务器资源。
- 服务端解析漏洞:例如利用
CTF中的常见考法
- 绕过前端验证
- 直接篡改HTTP请求,修改
Content-Type(如image/jpeg)或文件后缀名(如.php5、.phtml)。
- 直接篡改HTTP请求,修改
- 绕过服务端检查
- 文件头欺骗:在PHP文件开头加入图片的魔术字(如
GIF89a)绕过内容检测。 - 双写后缀:如
shell.php.jpg→ 部分过滤逻辑可能删去最后一个后缀,保留.php。 - 大小写绕过:尝试
.PhP或.pHp绕过黑名单。
- 文件头欺骗:在PHP文件开头加入图片的魔术字(如
- 配合其他漏洞
- 文件包含漏洞:上传一个非可执行文件(如图片马),通过Local File Inclusion(LFI)触发执行。
- .htaccess利用:上传自定义的
.htaccess文件,强制将特定后缀(如.txt)解析为PHP。
- 非Webshell解法
- 直接泄露Flag:题目可能要求上传文件后,通过路径访问直接读取上传内容中的Flag。
- 逻辑漏洞:例如上传时修改参数实现目录穿越(
../../flag.txt)。










