文章总结: 本文系统讲解CTF中文件上传漏洞的核心原理与实战技巧。漏洞成因是网站未严格校验文件后缀、类型或内容,导致攻击者可上传恶意脚本获取服务器权限。文章归纳了前端JS校验、后端后缀黑名单、MIME类型校验和文件内容校验四类常见过滤方式,并给出对应绕过方法如删除前端代码、大小写/空格/小数点绕过、修改Content-Type、制作图片马等。针对新手提供标准化解题流程和避坑指南,强调需结合解析漏洞执行图片马、区分服务器系统特性。 综合评分: 88 文章分类: CTF,WEB安全,漏洞分析,渗透测试,安全培训
CTF比赛入门第八期:文件上传漏洞全解
点击关注👉 点击关注👉
网络安全学习室
2026年6月22日 10:23 湖南
在小说阅读器读本章
去阅读
一、什么是文件上传漏洞?(零基础通俗理解)
1、漏洞核心定义
正常网站的文件上传功能,仅允许用户上传图片、压缩包、文档等安全文件。如果网站未对上传文件的后缀名、文件类型、文件内容做严格校验,攻击者即可上传脚本文件、恶意后门文件,文件被服务器解析执行后,即可获取网站权限、读取源码、拿到Flag,这就是文件上传漏洞。
2、漏洞核心危害
文件上传属于高危漏洞,危害远高于普通逻辑绕过漏洞:
1、上传恶意脚本,直接执行任意服务器命令,获取Flag;
2、上传后门文件,持久控制网站服务器;
3、越权读取站点源码、配置文件,获取核心密钥;
4、恶意篡改网站页面、植入恶意代码。
3、核心优势(赛场刚需)
该漏洞不区分网站语言,Python、Java、NodeJS、PHP站点均会出现,是真正的全平台通用漏洞,适配所有新版CTF赛事,避开了老旧PHP专属考点。
二、CTF赛场快速识别上传漏洞(一秒判断题型)
新手做题无需复杂探测,看到以下场景,直接判定为文件上传考点:
1、页面存在头像上传、图片上传、文件提交、素材上传、日志上传等功能;
2、上传正常图片后,页面会回显文件路径、文件地址;
3、上传脚本文件被拦截,提示「文件格式不合法」「仅允许图片格式」;
4、题目提示「请上传合规文件」「禁止上传非法文件」。
核心判定逻辑:只要可控文件内容、可控文件后缀,且文件可被服务器访问解析,就一定存在上传绕过漏洞。
三、上传漏洞核心校验方式(出题人通用套路)
所有CTF上传题的过滤方式只有三类,所有绕过技巧均围绕这三点展开,新手务必熟记:
1、前端JS校验(最基础、最好绕过)
仅在网页前端限制文件后缀,禁止上传脚本文件,后端无任何校验。属于纯送分题,前端限制可直接绕过。
2、后端后缀名校验(高频考点)
服务器校验文件后缀名,禁止上传脚本后缀,仅允许jpg、png、gif等图片后缀,是新生赛主流题型。
3、文件类型校验(MIME校验)
校验文件请求头的Content-Type类型,拦截脚本文件,仅允许image/png、image/jpeg等图片类型,进阶基础题型。
4、文件内容校验(进阶过滤)
检测文件头部内容,拦截纯脚本文件,必须伪造图片头才能绕过,适配中等难度赛题。
四、零基础通用绕过技巧(赛场通杀,直接套用)
针对以上四类过滤,整理CTF入门赛万能绕过方案,无需工具、直接手动操作,适配95%入门题型。
1、前端JS校验绕过(最简送分)
漏洞原理:校验逻辑在前端网页,后端无检测,前端限制形同虚设。
绕过方法:
1、F12打开开发者工具,直接删除前端限制文件格式的JS代码;
2、直接修改文件后缀,强行上传脚本文件;
3、抓包修改上传文件参数,无视前端限制。
2、后缀名黑名单绕过(核心考点)
题目禁止上传脚本后缀,可使用特殊后缀、大小写绕过、空格绕过、点绕过通用技巧:
万能绕过后缀(全平台通用):
1、大小写绕过:将脚本后缀改为大写,如 .ASP、.PY、.JSP(服务器Windows系统不区分大小写);
2、后缀加点绕过:.py.、.asp.(服务器自动清除末尾多余小数点);
3、空格绕过:.py(后缀后加空格,自动过滤空格,保留脚本后缀);
4、特殊后缀绕过:部分服务器解析异常后缀,.phpt、.phtml 等冷门后缀。
3、MIME文件类型绕过
绕过原理:后端仅校验请求头文件类型,不校验真实文件内容。
操作方法:抓包修改数据包中 Content-Type 字段,将脚本文件类型改为图片类型:image/png、image/jpeg,即可绕过类型检测。
4、文件内容绕过(图片马绕过)
针对校验文件头部的题型,使用图片马通杀:
1、在正常图片文件头部保留图片标识,尾部拼接恶意脚本代码;
2、文件整体伪装为图片,绕过内容检测;
3、配合文件包含、解析漏洞,执行图片中的脚本代码,获取Flag。
五、CTF经典真题逐题拆解(零基础可复现)
题型1:前端JS过滤绕过(入门签到题)
题目场景
网站有文件上传功能,仅提示「仅允许上传图片文件」,无法选择脚本文件上传,无后端严格校验。
解题步骤
1、F12打开开发者工具,找到上传按钮对应的JS校验代码,直接删除或禁用;
2、新建恶意脚本文件,后缀改为可上传格式,选中文件上传;
3、上传成功后,页面回显文件访问路径;
4、访问文件路径,脚本代码执行,直接读取Flag,解题完成。
题型2:后端后缀黑名单绕过(高频真题)
题目限制
后端拦截 .py、.jsp、.asp 等脚本后缀,仅允许图片格式上传,无内容校验。
解题思路
使用大小写+小数点组合绕过,规避黑名单检测:
1、将脚本文件命名为 shell.PY.;
2、直接上传文件,后端无法匹配黑名单小写后缀,校验通过;
3、服务器自动清除末尾小数点,解析为正常脚本文件;
4、访问文件地址,执行恶意代码获取Flag。
题型3:MIME类型过滤绕过(进阶基础题)
题目限制
拦截非图片类型文件,校验请求头Content-Type,上传脚本文件直接报错拦截。
解题步骤
1、开启抓包工具,正常上传脚本文件,抓取数据包;
2、修改数据包中 Content-Type 字段为image/png;
3、放行数据包,成功绕过文件类型校验,上传脚本文件;
4、访问文件路径执行代码,拿到Flag。
六、赛场标准化解题流程(新手无脑套用)
针对所有文件上传题型,整理固定解题步骤,杜绝思路混乱:
第一步:初步探测
正常上传jpg图片,测试是否可以上传、是否回显文件路径,确认上传功能可用。
第二步:判断过滤层级
1、无法选择脚本文件 → 前端JS过滤;
2、选中脚本文件上传报错 → 后端后缀黑名单过滤;
3、文件后缀合法仍报错 → MIME类型/文件内容过滤。
第三步:匹配对应绕过方案
根据过滤类型,套用前文对应的绕过技巧,构造合法可上传文件。
第四步:访问文件路径执行代码
上传成功后,通过回显路径访问文件,执行脚本获取Flag。
七、新手赛场高频避坑指南
1、区分黑白名单机制
黑名单是拦截指定后缀(可绕过),白名单是仅允许指定后缀(无法常规后缀绕过,需用图片马),切勿盲目套用Payload。
2、不要忽略文件路径回显
上传成功无回显路径时,优先尝试站点默认上传目录,如 /upload、/file、/static 等常见路径。
3、大小写绕过仅适配Windows服务器
Linux服务器区分大小写,禁止使用大小写绕过,优先选用空格、小数点绕过。
4、图片马必须配合解析漏洞
单纯上传图片马无法执行代码,必须结合文件包含、服务器解析漏洞才能触发脚本执行。
八、课后实操练习(本期专属刷题)
练习1(前端过滤绕过)
题目场景:上传页面仅前端限制图片格式,禁止上传脚本文件,后端无校验。
要求:绕过前端限制,成功上传脚本文件并获取Flag。
练习2(后缀黑名单绕过)
题目场景:后端禁止上传 .py、.txt 后缀文件,仅允许图片格式。
要求:使用小数点+空格组合方式绕过过滤,完成文件上传。
文末学习福利
如果你也是零基础、想参加CTF比赛但不知道从哪开始,可以点击文末阅读原文领取200节攻防教程,帮你少走弯路。后续我会持续更新网安实战、就业、副业相关干货,关注我,带你从零基础一步步靠网安变现。
九、下期预告(第九期全新赛道)
本期我们拿下了全平台通用的文件上传漏洞,彻底补齐CTF Web入门三大核心漏洞(SSTI、XSS、文件上传)!
CTF比赛入门第九期将开启非Web全新考点:缓冲区溢出基础入门,零基础讲解Pwn题型入门知识、栈溢出原理、基础EXP构造、简单赛事真题,带你突破Web赛道局限,解锁Pwn题型新手玩法。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:网络安全学习室 点击关注👉 点击关注👉《CTF比赛入门第八期:文件上传漏洞全解》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论