news 2026/4/18 5:03:19

CTF Web模块系列分享(四):文件上传/包含漏洞,突破服务器的文件屏障

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CTF Web模块系列分享(四):文件上传/包含漏洞,突破服务器的文件屏障

CTF Web模块系列分享(四):文件上传/包含漏洞,突破服务器的文件屏障

上期我们拆解了XSS和CSRF这两个客户端漏洞。

今天咱们进入系列的第四期——文件上传/包含漏洞专题。这两类漏洞堪称Web模块的服务器突破神器,核心逻辑是让服务器执行不该执行的文件,在CTF中属于中高频题型,很多中等难度的Web题都围绕这两个漏洞展开。学会这两个漏洞,你的Web解题能力会再上一个台阶!

今天的内容依旧是原理+实战的模式,先拆清楚两个漏洞的核心逻辑,再用具体题目手把手教你解题,新手也能轻松跟上。

一、先分清:文件上传和文件包含的核心区别

很多新手会把这两个漏洞放在一起学,因为它们经常搭配出现,但核心逻辑完全不同,先记牢区别:

通俗总结: 文件上传是“把坏文件放到服务器上”; 文件包含是“让服务器主动去读并执行坏文件”。

二、文件上传漏洞:核心逻辑与实战绕过

文件上传漏洞的本质是:服务器对用户上传的文件过滤不严格(比如只检查文件名后缀、MIME类型),导致恶意脚本文件被成功上传,并且能被服务器执行。

1. 新手必懂的3种基础绕过方式

CTF中文件上传的过滤方式很多,新手先掌握这3种最基础的绕过技巧,能解决60%的基础题:

原理:服务器只禁止了php、asp等常见脚本后缀,没禁止php5、phtml等不常见后缀(这些后缀在部分配置下也能被执行);

操作:将恶意文件的后缀改为php5、phtml、php3等,比如把shell.php改为shell.php5再上传。

原理:服务器只检查文件的MIME类型(比如图片文件的MIME是image/jpeg),不检查文件内容;

操作:用Burp抓包,将文件的Content-Type字段改为合法的MIME类型(比如image/jpeg、image/png),比如把php文件的Content-Type从application/octet-stream改为image/jpeg。

原理:服务器检查文件头部是否为图片格式(比如JPG文件头部是FF D8 FF),不检查后续内容;

操作:在php文件开头添加图片头部内容(比如FF D8 FF),保存为jpg后缀,再结合后缀名绕过或MIME绕过上传。

2. 实战演练:文件上传绕过拿shell

以CTFshow新手场的文件上传题目为例,解题步骤:

题目场景
打开题目链接,是一个图片上传页面,提示“仅允许上传jpg、png格式图片”,我们需要上传一句话木马文件,获取服务器权限后找到Flag。

解题步骤

三、文件包含漏洞:核心逻辑与实战利用

文件包含漏洞的本质是:服务器脚本(比如PHP)使用了动态包含文件的函数(include、require),并且包含的文件路径由用户控制,没有做严格过滤,导致攻击者可以指定包含恶意文件。

1. 新手必懂的2种包含类型

原理:包含服务器本地的文件,比如包含/etc/passwd(Linux系统用户文件)、phpinfo.php等;

常见场景:URL参数为文件路径,比如http://题目地址/index.php?file=home.php,其中file参数控制包含的文件。

原理:包含远程服务器上的文件(比如攻击者服务器上的恶意脚本),需要服务器开启allow_url_include配置;

常见场景:URL参数为远程文件地址,比如http://题目地址/index.php?file=http://攻击者服务器/shell.txt。

2. 实战演练:本地文件包含找Flag

以CTFshow新手场的本地文件包含题目为例,解题步骤:

题目场景
打开题目链接,URL为http://题目地址/index.php?file=welcome.txt,页面显示welcome内容,我们需要通过file参数包含本地文件,找到Flag。

解题步骤

四、新手避坑&学习建议

文件上传重点记“绕过思路”:不要死记payload,要理解服务器的过滤逻辑,针对性绕过。

文件包含注意“路径拼接”:如果题目中file参数有固定前缀(比如file=./include/xxx),需要用…/跳转目录(比如file=…/…/flag)。

必备工具:Burp Suite(抓包改包)、蚁剑/菜刀(连接一句话木马)。

推荐靶场:CTFshow新手场(文件上传/包含专题)、DVWA(中难度模式)、Upload-Labs(专门练文件上传)。

五、下期预告

今天我们搞定了文件上传和文件包含这两个核心漏洞,下期我们将进入系列的最后一期——Web实战技巧总结,涵盖解题工具进阶使用、常见题型思路梳理、比赛答题技巧等,帮大家整合前面所学的知识,轻松应对CTF比赛中的Web题目。

如果今天的内容对你有帮助,别忘了点赞、在看,转发给一起学CTF的小伙伴~

CTF学习资源分享

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我们和网安大厂360共同研发的的网安视频教程,内容涵盖了入门必备的操作系统、计算机网络和编程语言等初级知识,而且包含了中级的各种渗透技术,并且还有后期的CTF对抗、区块链安全等高阶技术。总共200多节视频,100多本网安电子书,最新学习路线图和工具安装包都有,不用担心学不全。

给大家准备了2套关于CTF的教程,一套是涵盖多个知识点的专题视频教程:

🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源

另一套是大佬们多年征战CTF赛事的实战经验,也是视频教程:

🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 0:17:29

在线电影购票系统

在线电影购票系统 目录 基于springboot vue在线电影购票系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue在线电影购票系统 一、前言 博主介绍&…

作者头像 李华
网站建设 2026/4/17 5:34:25

能否接入RAG系统?VibeThinker增强检索问答场景探索

VibeThinker能否接入RAG系统?增强检索问答场景的深度探索 在当前大语言模型(LLM)遍地开花的时代,我们越来越习惯于让一个“全能型”模型处理从写诗到编程、从翻译到数学推导的一切任务。然而现实是:这种“通才”模式虽…

作者头像 李华
网站建设 2026/4/16 10:23:06

5种C++变量交换方法,中小学生也能轻松掌握!

编程入门必学小技巧,CSP竞赛高频考点拆解在C编程学习中,变量交换是最基础的操作之一,也是CSP入门竞赛里的常客。很多同学只知道用临时变量交换,却不知道还有更巧妙的方法。今天就给大家整理了5种变量交换的实现方式,每…

作者头像 李华
网站建设 2026/4/12 15:20:40

【Docker与Git工作树切换实战】:掌握高效开发环境切换的5大核心技巧

第一章:Docker与Git工作树切换的核心价值在现代软件开发中,环境一致性与版本控制的高效管理是保障协作流畅的关键。Docker 通过容器化技术将应用及其依赖打包成可移植的镜像,确保开发、测试与生产环境的一致性。与此同时,Git 的工…

作者头像 李华
网站建设 2026/4/18 4:10:50

第三方审计邀请:请独立机构验证声明真实性

第三方审计邀请:请独立机构验证声明真实性 在当前大语言模型“军备竞赛”愈演愈烈的背景下,参数规模动辄数百亿、千亿,训练成本以百万美元计已成为常态。然而,这种“越大越好”的范式正面临现实拷问:我们真的需要如此…

作者头像 李华
网站建设 2026/4/15 5:39:30

部署失败怎么办?常见VibeThinker Docker启动错误汇总

部署失败怎么办?常见VibeThinker Docker启动错误汇总 在AI模型日益普及的今天,越来越多开发者尝试将前沿语言模型部署到本地环境进行实验或集成。然而,理想很丰满,现实却常常卡在“第一步”——Docker容器跑不起来。尤其是像 Vibe…

作者头像 李华