CTF比赛入门第八期:文件上传漏洞全解

admin 2026-07-02 05:00:53 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文系统讲解CTF中文件上传漏洞的核心原理与实战技巧。漏洞成因是网站未严格校验文件后缀、类型或内容,导致攻击者可上传恶意脚本获取服务器权限。文章归纳了前端JS校验、后端后缀黑名单、MIME类型校验和文件内容校验四类常见过滤方式,并给出对应绕过方法如删除前端代码、大小写/空格/小数点绕过、修改Content-Type、制作图片马等。针对新手提供标准化解题流程和避坑指南,强调需结合解析漏洞执行图片马、区分服务器系统特性。 综合评分: 88 文章分类: CTF,WEB安全,漏洞分析,渗透测试,安全培训


cover_image

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/pngimage/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比赛入门第八期:文件上传漏洞全解》

评论:0   参与:  0