1. 文件上传漏洞:Web安全的“后门”与CTF的“敲门砖”
如果你刚开始接触CTF(Capture The Flag)比赛,尤其是Web安全方向,那么“文件上传”这个关卡你绝对绕不过去。它就像是一个经典的“后门”,考验着你能否发现并利用服务器在处理用户上传文件时的疏忽。我刚开始打CTF那会儿,也在这个点上卡了很久,总觉得不就是传个文件嘛,能有多难?结果被各种过滤规则和校验机制“教做人”了。其实,文件上传漏洞的核心逻辑很简单:服务器本意是让你上传图片、文档等无害文件,但如果你能成功上传并执行一个包含恶意代码的文件(比如“一句话木马”),就等于拿到了服务器的一把“钥匙”。
在CTFshow的Web151-170这一系列题目中,出题人精心设计了一个从易到难的“阶梯”,几乎涵盖了文件上传漏洞所有主流的绕过技巧和利用场景。从最基础、一眼就能看穿的前端校验,到需要深入理解服务器配置的.user.ini,再到考验编程和二进制知识的PNG/JPG二次渲染,每一步都在加深你对Web应用安全的理解。通过实战这些题目,你不仅能学会“解题”,更能理解这些漏洞在真实网络攻防中是如何被利用和防御的。接下来,我就带你从头到尾,把这些“坑”一个个踩明白,把技巧一个个学到手。
2. 基础绕过:撕开第一道防线
刚开始的几关,目的是让你熟悉文件上传的基本流程和最常见的“偷懒”式防御。服务器开发者可能为了省事,把安全检查放在了最容易被绕过的地方。
2.1 Web151:前端JS校验的“纸老虎”
第一关,通常是给你建立信心的。页面提示“前端校验不可靠”,这几乎是明牌告诉你突破口在哪。什么是前端校验?就是网站用JavaScript在你的浏览器里检查你选择的文件后缀名是不是.jpg、.png这些图片格式。如果不符合,弹个窗就不让你点上传按钮。
这种防御为什么是“纸老虎”?因为你完全有能力修改运行在自己浏览器里的代码。具体怎么操作呢?我常用的有两种“姿势”:
第一种,直接修改网页代码。 按F12打开开发者工具,找到控制文件上传的JavaScript代码。通常是一段包含checkFile()或类似名字的函数,里面会有类似 if(!/\.(jpg|png|gif)$/i.test(filename)) 的判断。你直接在控制台里把这个函数重写,或者更粗暴地,找到对应的HTML输入框的accept属性(如果存在)删掉,然后就可以选择任意文件了。修改完后,选中你的PHP木马文件,点击上传,成功!
第二种,代理拦截修改。 这个方法更通用,也是后续关卡的基础技能。你先老老实实选一个shell.png文件(内容还是PHP木马代码),然后点击上传。在请求发往服务器的瞬间,用Burp Suite这类工具拦截下这个HTTP请求包。你会看到请求体里有一个filename="shell.png"的参数,你把它改成filename="shell.php",然后放行这个数据包。服务器收到的是被你修改后的请求,它以为你上传的就是.php文件,于是漏洞利用成功。
注意:上传成功后,怎么验证?直接访问你上传的文件地址,比如
http://target.com/upload/shell.php。如果页面是空白(不是404未找到),那大概率就成功了。接下来就可以用“中国菜刀”或“蚁剑”这类Webshell管理工具去连接了。连接时如果遇到证书错误,把https改成http试试,很多时候是靶场环境配置问题。

&spm=1001.2101.3001.5002&articleId=150004468&d=1&t=3&u=4d021d6ac04149699c27b874f6996d2c)
9900

被折叠的 条评论
为什么被折叠?



