HTTP详细知识点

前言

HTTP 是 CTF Web 方向的基础中的基础 ,所有 Web 漏洞的利用、绕过几乎都要基于 HTTP 协议做操作(比如改请求头、改参数、抓包重放),CTF 里考的 HTTP 知识点不偏难,但全是高频实用点 ,同时标注 CTF 里的常考场景和利用技巧

先明确一个核心:HTTP 就是客户端(浏览器 / 你用的 Burp)和服务端(网站服务器)之间的沟通语言 ,所有交互都是 "客户端发请求→服务端回响应",CTF 里的操作本质就是篡改这份 "沟通内容",让服务端做它原本不让做的事。

下面分请求、响应、核心头字段、常用技巧、CTF 高频考点五个部分讲,覆盖所有 CTF 中会用到的 HTTP 知识。

一、先搞懂:HTTP 的交互就两步 ------ 发请求、收响应

你访问一个网站,背后的过程就是:

  1. 客户端(比如浏览器)拼一个HTTP 请求包发给服务器(比如百度的服务器);
  2. 服务器解析请求包,处理完后拼一个HTTP 响应包发回客户端;
  3. 客户端解析响应包,展示成你看到的网页 / 内容。

CTF 里最常用的工具Burp Suite ,核心功能就是拦截、修改、重放 这两个包 ------ 比如把请求包里的admin=0改成admin=1,把GET改成POST,这是所有 Web 题的操作基础。

两个包的结构都很简单,不用背,能认、能改就行,下面先讲最核心的结构,多余的字段 CTF 里基本用不上。

二、HTTP 请求包:客户端对服务端说的 "话"(重点改这个)

请求包是 CTF 里修改最多的部分 ,结构分 3 块,从上到下依次是:请求行 → 请求头 → 请求体,空行分隔,格式固定。

1. 请求行:核心指令,告诉服务端 "做什么、找哪个、用哪个版本"

格式:请求方法 访问路径 HTTP协议版本例:GET /index.php?name=test HTTP/1.1这是请求包的第一行 ,CTF 里高频修改前两个部分,逐一说:

(1)请求方法:最核心的 "指令动作"(CTF 常考修改 / 绕过)

就是告诉服务端 "我要干嘛",CTF 里常用的就 6 个 ,其余几乎不考,重点记GET/POST,剩下的是 "绕开限制的神器":

  • GET :最常用,"拿东西"(比如访问网页、查数据),参数直接跟在 URL 后面?name=test&age=18),有长度限制(一般几 KB)。CTF 考点:GET 参数易被截取,部分网站只过滤 POST 不过滤 GET,可直接构造恶意参数。
  • POST :"提交东西"(比如登录、注册、上传文件),参数藏在请求体里(后面讲),无长度限制,更隐蔽。CTF 考点:登录框 / 提交框几乎都是 POST,需抓包到请求体改参数;部分网站防 GET 注入,却漏了 POST 注入。
  • PUT :"上传文件",服务端开启后,可直接上传文件到服务器(比如上传shell.php)。CTF 考点:高频绕过文件上传限制,比如网站禁止 POST 上传,却没关 PUT 方法,直接用 PUT 传恶意文件。
  • DELETE:"删除文件 / 数据",CTF 里偶考,比如构造 DELETE 请求删除服务端的限制文件。
  • OPTIONS :"探测信息",查询服务端允许哪些请求方法(比如查出来允许 PUT,就可以用 PUT 上传)。CTF 考点:拿到网站后,先送一个 OPTIONS 请求,快速摸清服务端的 "权限",找可利用的方法。
  • TRACE :"回显请求",服务端会把收到的请求原封不动返回,CTF 里偶考跨站追踪漏洞,或用来探测服务端的过滤规则。
(2)访问路径:告诉服务端 "找哪个文件 / 接口"

例:/index.php/admin/login/api/getflag,CTF 里高频爆破路径 (比如猜后台路径/admin/manage)。小技巧:如果访问/index.php返回 403(禁止),可以试试/index.php/(加斜杠),部分中间件(Nginx/Apache)会绕过权限检查。

(3)HTTP 版本:几乎不用改,CTF 里都是HTTP/1.1

1.1 是最常用的版本,支持长连接,不用每次请求都重新建立连接,其余版本(1.0/2.0/3.0)CTF 里几乎不考。

2. 请求头:客户端的 "身份信息 / 附加要求"(CTF 高频改,核心)

请求行下面就是请求头,格式是头字段名: 字段值,一行一个,比如Host: www.ctf.comCookie: user=123。本质是客户端告诉服务端 "我是谁、我要什么、我从哪来" ,服务端会根据请求头做权限校验、过滤、适配 ------CTF 里 80% 的绕过都是改请求头,比如伪装成管理员、伪装成正常浏览器、绕开 IP 封禁。

三、CTF 中 HTTP 必考 12 个请求头(按考察频率排序)

所有请求头均围绕作用 + CTF 常考场景 + 实战利用技巧讲解,全是 Web 题中高频修改、绕过的核心点,理解后直接能上手抓包改包操作。

作用 :服务端存在客户端的身份凭证,是客户端和服务端之间的 "身份通行证",比如登录后的用户 token、是否为管理员的标识、会话 ID 等,每次请求会自动携带给服务端做身份校验。

CTF 考点:Web 方向 TOP1 必考请求头,覆盖越权、登录绕过、注入、会话劫持等几乎所有基础场景。

利用技巧 :① 直接修改值做越权,比如看到admin=0admin=1is_login=0is_login=1,大概率直接进入管理员后台;② 无加密的 Cookie 可直接构造,比如网站验证user=admin,直接添加该 Cookie 键值对就能免登;③ 把注入 payload 写进 Cookie 参数,比如id=1' or 1=1#,突破服务端仅过滤 URL / 请求体的注入限制;④ 窃取有效 Cookie 值,直接替换自己的 Cookie,实现会话劫持登录。

2. X-Forwarded-For(XFF)

作用 :告知服务端客户端的真实 IP 地址,主要用于存在代理服务器的场景,服务端通过这个头获取原始访问 IP,而非代理服务器的 IP。

CTF 考点:绕开 IP 封禁 / IP 白名单限制的核心头,仅次于 Cookie 的高频考点,几乎所有涉及 IP 校验的题目都会考。

利用技巧 :① 网站封了你的公网 IP,直接将 XFF 改为任意合法 IP(如192.168.1.1),突破 IP 黑名单;② 伪造服务器本地 IP127.0.0.1,多数网站会对本地回环 IP 做免校验、免权限处理,直接访问后台 / 敏感接口;③ 部分网站按 IP 限制访问次数,不断修改 XFF 的 IP 值,绕过访问频率限制;④ 若 XFF 被过滤,可尝试拼接多个 IP(如127.0.0.1,192.168.1.2),部分服务端仅解析第一个 IP。

3. User-Agent(UA)

作用 :告知服务端客户端的设备、浏览器版本信息,比如 Chrome、Firefox、手机端微信浏览器、爬虫程序等,服务端会根据 UA 做页面适配或爬虫拦截。

CTF 考点:绕开设备 / 浏览器限制、爬虫检测、简单过滤规则,同时偶考 UA 注入。

利用技巧 :① 网站仅允许手机端访问,将 UA 改为手机端标识(如Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148),直接访问手机端专属敏感接口;② 网站拦截爬虫,将 UA 改为主流浏览器的正常标识,绕过爬虫检测;③ 部分网站仅过滤默认 UA 的请求,自定义特殊 UA(如CTF/1.0test/abc),突破服务端的简单过滤;④ 极少数网站会将 UA 值直接拼接到代码 / SQL 语句中,构造恶意 payload 写入 UA,触发代码执行 / SQL 注入。

4. Referer

作用 :告知服务端客户端从哪个页面跳转过来,是请求的 "来源页面",服务端主要用这个头做防盗链、页面访问限制(如仅允许从首页跳转到后台)。

CTF 考点:绕开防盗链、页面来源校验,Web 基础题的高频考点。

利用技巧 :① 网站禁止直接访问图片 / 文件 / 敏感接口(直接访问返回 403),将 Referer 改为网站自身的域名 / 首页路径(如https://www.ctf.com/https://www.ctf.com/index.php),绕过防盗链校验;② 后台页面仅允许从网站内指定页面跳转,构造 Referer 为该指定页面的路径,直接访问后台;③ 部分网站按 Referer 统计访问来源,修改 Referer 为恶意域名,偶可触发缓存投毒漏洞(CTF 偏进阶考点);④ 若 Referer 被要求严格匹配,可尝试省略路径仅保留域名,或在路径后加随机参数(如/index.php?123),部分服务端仅做模糊匹配。

5. Content-Type

作用 :告知服务端请求体中的数据格式,服务端会根据这个头解析请求体参数,是前后端交互的 "格式约定"。

CTF 考点:文件上传绕过的核心头,同时考参数格式解析绕过,Web 中档题的必考项。

利用技巧 :① 上传 php/jsp 等恶意文件被拦截,将 Content-Type 从脚本文件格式(如application/x-httpd-php)改为图片 / 文本格式(如image/jpegimage/pngtext/plain),突破服务端的前端 / 初级文件类型检测;② 服务端仅接受 JSON 格式参数,将 Content-Type 改为application/json,并把请求体改为 JSON 格式(如{"user":"admin","pass":"123456"}),可绕过服务端对表单格式的参数过滤;③ 表单提交时默认 Content-Type 为application/x-www-form-urlencoded,改为multipart/form-data,部分服务端会放松参数过滤规则。

6. Origin

作用 :告知服务端跨域请求的发起域名,仅在跨域请求时携带,同源请求时不携带,服务端通过这个头做跨域资源共享(CORS)的权限校验。

CTF 考点:CORS 跨域漏洞的必考头,Web 中档题高频考点,常结合数据窃取出题。

利用技巧 :① 构造恶意域名写入 Origin(如https://attacker.com),若服务端未过滤 Origin、直接返回Access-Control-Allow-Origin: *或匹配的恶意域名,即可触发 CORS 漏洞,窃取网站的敏感数据(如 flag、用户信息);② 若服务端对 Origin 做模糊匹配,可构造子域名 / 相似域名(如服务端允许ctf.com,构造test.ctf.com),绕过 Origin 校验;③ 若 Origin 被过滤,尝试删除 Origin 头,或构造空 Origin(Origin: null),部分服务端会对空 Origin 做放行处理。

7. X-Real-IP

作用 :和 X-Forwarded-For 功能完全一致,都是告知服务端客户端的真实 IP,区别是部分服务端(如 Nginx+PHP)仅识别 X-Real-IP,不识别 XFF。

CTF 考点:作为 XFF 的 "备用方案",绕开 IP 封禁 / 白名单,在 XFF 修改无效时必试。

利用技巧 :① 改 XFF 后仍被拦截,直接将 X-Real-IP 改为127.0.0.1,利用本地 IP 免校验规则;② 部分网站同时校验 XFF 和 X-Real-IP,需将两个头改为相同的 IP 值(如均为192.168.1.1),避免校验失败;③ 同 XFF 的利用技巧,可修改为任意合法 IP,突破 IP 黑名单和访问频率限制。

8. Host

作用 :告知服务端要访问的域名 / 主机地址,主要用于服务端的虚拟主机配置(一台服务器绑定多个域名),服务端根据 Host 头返回对应域名的内容。

CTF 考点:绕开域名访问限制、探测隐藏虚拟主机、缓存投毒,Web 偏进阶考点。

利用技巧 :① 网站仅允许指定域名访问(如www.ctf.com),改 Host 为该指定域名,突破域名黑名单;② 构造未知域名写入 Host(如test.ctf.comadmin.ctf.com),探测服务端隐藏的虚拟主机 / 后台管理系统;③ 构造恶意域名 + 特殊参数写入 Host,触发服务端缓存投毒,让其他访问者加载恶意内容(CTF 进阶考点);④ 部分网站对 Host 做严格匹配,可尝试在域名后加端口(如www.ctf.com:8080),部分服务端会忽略端口仅校验域名。

9. Accept

作用 :告知服务端客户端能接受的响应数据格式,比如网页(text/html)、JSON(application/json)、图片(image/*)等,服务端会根据 Accept 返回对应格式的内容。

CTF 考点:绕开数据格式限制,获取未过滤的原始数据,偶考在基础题中。

利用技巧 :① 网站默认返回 HTML 格式的内容(敏感数据被过滤 / 隐藏),将 Accept 改为application/jsonapplication/xml,服务端可能返回未做过滤的 JSON/XML 原始数据,直接获取 flag / 敏感信息;② 构造特殊的 Accept 值(如*/*,表示接受所有格式),部分服务端会返回多格式的混合数据,可能包含隐藏信息;③ 若服务端按 Accept 限制文件下载,改为对应文件格式的 Accept 值(如下载 pdf 改为application/pdf),绕过下载格式限制。

10. Content-Length

作用 :告知服务端请求体的字节长度,服务端根据这个数值准确读取请求体中的数据,避免解析失败,是请求体的 "长度标识"。

CTF 考点:手工构造请求、绕过简单的请求体解析校验,偏基础操作考点。

利用技巧 :① 手工抓包修改请求体内容后,若 Burp 未自动更新 Content-Length,需手动修改为请求体的实际字节数,否则服务端会因解析失败返回错误;② 部分服务端仅校验 Content-Length 的数值格式,不校验是否和实际请求体一致,可构造超大 / 超小的数值(如Content-Length: 999999),干扰服务端的请求体解析,偶可突破简单过滤;③ 无请求体时(如 GET 请求),可省略该头,或设为0,避免服务端解析异常。

11. Cache-Control

作用 :告知服务端客户端的缓存规则,比如是否缓存页面、缓存有效期、是否强制刷新等,服务端会根据这个头做页面缓存适配。

CTF 考点:绕开页面缓存、获取最新的页面内容,低频考点,多在基础题中结合其他漏洞考察。

利用技巧 :① 访问敏感接口时,页面返回缓存的旧内容(无 flag / 敏感信息),设置Cache-Control: no-cacheCache-Control: no-store,强制服务端返回最新的页面内容,避免缓存干扰;② 部分网站通过缓存保存临时验证信息,设置Cache-Control: max-age=0,强制刷新页面,重置验证信息,偶可绕过简单的访问限制。

12. Connection

作用 :告知服务端是否保持 TCP 长连接 ,常用值为keep-alive(保持长连接,后续请求无需重新建立 TCP 连接)和close(关闭连接,每次请求重新建立 TCP 连接)。

CTF 考点:干扰服务端的连接处理,极低频考点,多在偏进阶的请求解析漏洞中考察。

利用技巧 :① 部分服务端对长连接做了访问次数限制,将Connection: keep-alive改为Connection: close,每次请求重新建立连接,绕过长连接的访问频率限制;② 手工构造多个连续请求时,设置Connection: keep-alive,保持连接不中断,避免多次建立连接导致的请求失败;③ 部分服务端对 Connection 头做了简单过滤,可尝试修改为小写connection: keep-alive,突破过滤规则。

四、HTTP 请求体:藏参数的 "核心区域"(GET/POST 的核心区别)

请求体是POST/PUT/DELETE 请求专属 的参数区域(GET 请求无请求体,参数在 URL),位于请求头最后一行,用空行分隔 ,服务端靠Content-Type头解析格式,CTF 里常考修改请求体格式 / 参数绕过过滤,核心掌握 3 种常用格式:

1. 表单格式(application/x-www-form-urlencoded)

最常用的格式,登录 / 注册 / 普通提交都是这个格式,参数格式:user=admin&pass=123&code=456,键值对用&分隔,等号连接。CTF 利用技巧

  • 抓包后直接修改参数值(如pass=123pass' or 1=1#),触发 SQL 注入;
  • 若参数被过滤,可在参数后加随机空值 (如user=admin&a=&pass=123),干扰服务端过滤规则;
  • 特殊字符用URL 编码 绕过(如空格改%20、单引号改%27),突破前端 / 初级过滤。

2. 表单上传格式(multipart/form-data)

文件上传专属格式 ,会用分隔符 (如----WebKitFormBoundary7MA4YWxkTrZu0gW)分隔参数和文件内容,包含文件名称、文件类型、文件二进制数据。CTF 利用技巧

  • 上传恶意文件时,修改分隔符后的filename(如1.jpg1.php)、Content-Type(如image/jpegapplication/x-httpd-php);
  • 给文件名加特殊后缀 / 符号 (如1.php.1.php%001.php/),绕过服务端的文件后缀检测;
  • 把恶意代码藏在图片二进制数据中,保留图片格式,触发文件包含漏洞执行代码。

3. JSON 格式(application/json)

前后端分离项目常用,参数是标准 JSON 字符串,格式:{"user":"admin","pass":"123","is_admin":false}CTF 利用技巧

  • 把布尔值falsetrue(如is_admin:true),直接绕过管理员权限校验;
  • 注入 payload 用转义字符 处理(如单引号改\'、双引号改\"),避免 JSON 解析报错;
  • 若服务端仅过滤表单格式,将请求头Content-Type改为application/json,请求体改 JSON 格式,绕过参数过滤(高频考点)。

补充:无请求体的情况

GET/OPTIONS/TRACE 请求无请求体,所有参数都在 URL 或请求头中,若强行加请求体,服务端会直接忽略,CTF 里别做无用功。

五、HTTP 响应包:服务端的 "回复内容"(找 flag / 探漏洞的关键)

客户端发请求后,服务端返回的内容就是响应包,结构分响应行、响应头、响应体 ,CTF 里80% 的 flag 藏在响应体 ,响应头则是探漏洞、绕限制的关键,核心考点全在这:

1. 响应行:服务端的 "状态提示"

格式:HTTP版本 状态码 状态描述,例:HTTP/1.1 200 OKHTTP/1.1 403 Forbidden核心状态码(CTF 必考,记含义 + 利用技巧)

  • 200 OK:请求成功,响应体是正常内容(找 flag 的主要场景);
  • 301/302 重定向:服务端让客户端跳转到其他页面,必看响应头 Location(里面是跳转地址,常藏后台路径 /flag 地址);
  • 403 Forbidden:禁止访问,需改请求头(Cookie/XFF/Referer)或 URL(加斜杠 / 改后缀)绕过;
  • 404 Not Found:页面不存在,要么路径错了(需爆破路径),要么服务端做了隐藏;
  • 500 Internal Server Error:服务器内部错误,高频触发报错注入(构造 payload 让服务端报错,返回数据库 / 代码信息);
  • 405 Method Not Allowed:请求方法不被允许,用 OPTIONS 请求探测允许的方法(PUT/DELETE),绕开限制;
  • 401 Unauthorized:未授权,需加 Cookie/token(常从其他页面的响应头中找);
  • 304 Not Modified:返回缓存内容,改请求头Cache-Control: no-cache强制刷新,获取最新内容。

2. 响应头:服务端的 "隐藏信息"(CTF 高频挖漏洞点)

响应头是服务端告诉客户端的附加信息 ,格式和请求头一致(头字段名: 字段值),CTF 里主要考信息泄露、漏洞探测、绕过限制,核心记 10 个必考响应头:

(1)Location

作用 :301/302 重定向时的跳转地址 ,CTF 里必看 ,常藏后台路径(如/admin)、flag 地址(如/flag.txt)。技巧:抓包看到 302 状态码,直接复制 Location 的地址访问,不用等浏览器自动跳转。

作用 :服务端给客户端设置 Cookie (如登录成功后返回user=admin; path=/),CTF 里是获取有效 Cookie 的核心。技巧 :登录失败后也看 Set-Cookie,可能返回临时 token,改值后可绕过登录;多个 Cookie 用;分隔,直接复制到请求头 Cookie 中使用。

(3)X-Powered-By

作用 :服务端暴露后端语言 / 版本 (如PHP/7.2.34Python/3.8.0Express/4.17.1),CTF 信息泄露 TOP1技巧:看到这个头,直接确定后端技术栈(如 PHP 则考 SQL 注入 / 文件包含,Python 则考 Flask 模板注入),针对性构造 payload。

(4)Access-Control-Allow-Origin(CORS 核心)

作用 :服务端设置允许跨域的域名 ,CTF 里CORS 漏洞必考技巧 :若值为*(允许所有域名)或恶意域名(如你构造的attacker.com),直接触发 CORS 漏洞,窃取敏感数据;若值为具体域名,构造相似域名绕过。

(5)Server

作用 :暴露服务器 / 中间件版本 (如Nginx/1.19.0Apache/2.4.41Tomcat/8.5.60),常含中间件漏洞技巧:看到具体版本,直接查对应漏洞(如 Nginx 1.19.0 的解析漏洞、Apache 2.4.41 的文件遍历),直接利用。

(6)Content-Disposition

作用 :文件下载时的文件名 / 格式 (如attachment; filename=flag.txt),CTF 里藏 flag 文件名 的高频点。技巧:看到这个头,直接下载文件,大概率是 flag;若文件名被隐藏,改请求头 Accept 触发下载。

(7)Content-Length

作用 :响应体的字节长度 ,CTF 里用于判断是否有隐藏内容技巧:页面显示空白,但 Content-Length 值大于 0,说明响应体有隐藏内容(如 flag),直接在 Burp 中看响应体原始内容。

(8)X-Frame-Options

作用 :防止点击劫持 ,值为DENY(禁止嵌入)、SAMEORIGIN(仅允许同域名嵌入)。技巧:若值为空或不存在,说明网站存在点击劫持漏洞,CTF 里偶考利用该漏洞获取 flag。

(9)Refresh

作用 :设置页面自动刷新 / 跳转 (如3;url=/login.php,3 秒后跳转到登录页)。技巧 :抓包看到这个头,直接修改 url 值(如/login.php/admin.php),绕过自动跳转,访问敏感页面。

(10)WWW-Authenticate

作用 :401 未授权时,要求客户端输入账号密码 ,CTF 里偶考弱口令爆破技巧 :看到这个头,用 Burp 爆破账号密码(常用弱口令admin/adminroot/root),突破授权限制。

3. 响应体:藏 flag 的 "主战场"(CTF 核心找答案区域)

响应体是服务端返回的实际内容(网页源码、JSON 数据、文件内容、纯文本),CTF 里 90% 的 flag 直接藏在这里,核心技巧:

  • 页面显示的内容有限,必看 Burp 中的 "原始响应体" (前端可能隐藏 flag,如用display:none);
  • 若响应体是 JSON 数据,重点看未过滤的字段 (如data: "flag{123}"msg: "error: flag is in /var/www/flag.txt");
  • 若响应体是空白,检查Content-Length(大于 0 则有隐藏内容),或改请求头(Accept/UA)重新请求;
  • 下载文件时,响应体就是文件二进制数据,直接保存为文件(如 flag.txt、flag.zip),打开即得 flag。

六、HTTP 协议核心特性(CTF 绕过滤的 "隐形神器")

HTTP 是无状态、明文、基于请求 - 响应的协议,这些特性本身不是漏洞,但 CTF 里服务端的过滤规则常忽略这些特性,成为绕过的关键,核心掌握 4 个必考特性:

1. 无状态协议

含义 :服务端不会记住客户端的上一次请求,每次请求都是独立的(靠 Cookie/Session 维持状态)。CTF 利用技巧

  • 若服务端按请求次数限制,每次请求修改 Cookie/XFF/UA,让服务端认为是不同客户端,绕过次数限制;
  • 登录态失效后,重新抓包发送带有效 Cookie 的请求,无需重新登录。

2. 明文传输

含义 :HTTP 请求 / 响应的所有内容都是明文 (未加密),可被抓包、修改、重放。CTF 利用技巧

  • 用 Burp 直接拦截、修改、重放请求(所有 Web 题的操作基础),无需解密;
  • 若看到 HTTPS(加密),先配置 Burp 证书,抓包后转为明文处理(CTF 里 HTTPS 仅考证书配置,无加密漏洞)。

3. 头字段不区分大小写

含义 :HTTP 请求头 / 响应头的字段名不区分大小写 ,服务端会自动解析(如CookiecookieXFFx-forwarded-for效果一致)。CTF 利用技巧

  • 若服务端过滤特定头字段(如过滤XFF),将字段名改为大小写混合 (如X-Forwarded-Forx-fOrWaRdEd-fOr),突破过滤。

4. 头字段可重复 / 拼接

含义 :同一个头字段可在请求中重复出现 ,或用逗号拼接 多个值,服务端一般会解析所有值。CTF 利用技巧

  • 若服务端过滤 XFF 的单个 IP(如过滤127.0.0.1),重复添加 XFF(X-Forwarded-For: 192.168.1.1X-Forwarded-For: 127.0.0.1),或拼接 IP(X-Forwarded-For: 192.168.1.1,127.0.0.1),部分服务端会解析最后一个 IP;
  • 若过滤 Cookie 的admin=1,重复添加 Cookie(Cookie: user=testCookie: admin=1),绕过过滤。

七、HTTP 高频协议漏洞(CTF 中档题必考,直接利用拿 flag)

这些漏洞是基于 HTTP 协议本身的设计缺陷,常和其他漏洞结合,核心掌握 3 个 CTF 高频漏洞,原理简单、利用直接:

1. CORS 跨域漏洞(跨域资源共享)

核心原理 :服务端的Access-Control-Allow-Origin响应头配置不当(如允许所有域名、允许任意子域名),导致恶意域名可窃取网站敏感数据(flag / 用户信息)。CTF 利用技巧

  • 抓包发送跨域请求(如从attacker.com请求目标网站的/api/getflag);
  • 若响应头Access-Control-Allow-Origin: *Access-Control-Allow-Origin: attacker.com,直接在响应体中获取 flag;
  • 若服务端校验 Origin,构造相似域名 (如目标域名为ctf.com,构造ctf.com.attacker.com),绕过校验。

2. 点击劫持漏洞

核心原理 :服务端未设置X-Frame-Options响应头,导致恶意网站可将目标网站嵌入 iframe 框架 ,诱导用户点击,窃取操作 /flag。CTF 利用技巧

  • 构造一个包含 iframe 的 HTML 页面,嵌入目标网站的敏感页面(如/admin/flag.php);
  • 诱导用户点击(CTF 里无需实际诱导,直接构造页面即可证明漏洞,获取 flag)。

3. 重定向漏洞(开放重定向)

核心原理 :服务端的重定向参数(如url=/login.php)未做过滤,攻击者可构造恶意重定向地址(如url=https://attacker.com),或跳转到敏感页面(如url=/flag.txt)。CTF 利用技巧

  • 找到重定向参数(如/redirect.php?url=/login.php),将 url 值改为敏感路径 (如/flag.txt/admin.php),直接跳转到目标页面拿 flag;
  • 若参数被过滤,用URL 编码 / 相对路径 (如../flag.txt)绕过。

八、CTF HTTP 实操改包技巧(Burp 专属,所有 Web 题通用)

所有 HTTP 知识点最终都要落地到Burp 抓包、修改、重放,这部分是 CTF 的 "操作基础",掌握后能应对所有 HTTP 相关的修改场景,核心 8 个技巧:

  1. 抓包拦截:打开 Burp 的 "Intercept is on",浏览器访问目标网站,Burp 会自动拦截所有 HTTP 请求;
  2. 修改请求:在 Burp 的 "Request" 页面,直接修改请求行、请求头、请求体,改完点击 "Forward" 发送;
  3. 重放请求:选中拦截的请求,右键 "Send to Repeater",在 Repeater 中可反复修改、发送,适合测试 payload;
  4. 爆破参数 :选中请求中的参数值(如id=1),右键 "Send to Intruder",在 Intruder 中设置爆破字典,批量测试(适合爆破账号密码、路径、ID);
  5. 查看原始内容:在 Burp 的 "Response" 页面,切换到 "Raw",查看服务端返回的原始响应体,避免前端隐藏 flag;
  6. URL 编码 / 解码:选中需要编码的内容,右键 "URL Encode"(编码)/"URL Decode"(解码),适合绕过特殊字符过滤;
  7. 保存响应体:在 Repeater 的 "Response" 页面,右键 "Save response",将响应体保存为文件(适合下载 flag 文件);
  8. 构造请求:在 Burp 的 "Repeater" 页面,直接手动构造请求(如 PUT 请求上传文件、OPTIONS 请求探测方法),无需浏览器触发。

九、CTF HTTP 高频坑点(避坑必备,少走 90% 弯路)

  1. 改完请求体后,一定要检查 Content-Type 头,格式不匹配会导致服务端解析失败;
  2. 302 重定向后,浏览器会自动删除部分请求头(如 Referer),需在 Burp 中手动转发,保留请求头;
  3. 部分服务端会过滤请求头的空格 / 换行,修改时保持格式规范(头字段名和值之间仅一个空格);
  4. JSON 格式的请求体,引号必须是双引号,单引号会导致解析报错;
  5. 看到 HTTPS 不要慌,配置 Burp 证书后和 HTTP 操作完全一致,CTF 里 HTTPS 无加密相关考点。

以上就是 CTF Web 方向中所有 HTTP 核心知识点,从基础的请求 / 响应结构,到进阶的漏洞利用、实操技巧,全覆盖且贴合 CTF 考情,掌握后能应对所有和 HTTP 相关的 Web 题,也是后续学习 SQL 注入、文件上传等漏洞的基础。

相关推荐
PinTrust SSL证书14 小时前
Sectigo(Comodo)企业型OV通配符SSL
网络·网络协议·网络安全·小程序·https·ssl
Black蜡笔小新14 小时前
国标GB28181视频监控平台EasyCVR赋能平安乡村建设,构筑乡村治理“数字防线”
java·网络·音视频
优秀是一种习惯啊14 小时前
DPDK 学习第一天
网络·dpdk
pengyi87101515 小时前
静态IP代理稳定性测试核心指标,判断IP质量的关键
网络
Johnstons15 小时前
网络可观测性落地指南:从“出了问题才排查“到“实时感知全网状态“
开发语言·网络·php
路溪非溪15 小时前
wireshark抓包看ip协议
网络·tcp/ip·wireshark
xiangxiongfly91515 小时前
Android 使用WebSocket通信
android·websocket·网络协议·okhttp
小梦爱安全15 小时前
Ansible剧本1
java·网络·ansible
科技牛牛15 小时前
平台该怎么设计更低误伤的 IP 风控策略?
服务器·网络·tcp/ip
一颗青果15 小时前
如何加速TCP传输大文件
网络·网络协议·tcp/ip