BUGKU-Do you know HTTP
一、HTTP 核心知识点精讲
本节系统梳理 HTTP 协议的关键概念,结合实例拆解原理,为后续实战题目提供清晰的理论支撑。
1.1 HTTP 常见请求方法:功能与场景
HTTP 请求方法定义了客户端与服务器的交互意图,核心常用方法如下:
-
GET:核心作用是获取服务器资源,请求参数会直接拼接在 URL 中(如https://example.com/name.php?name=benben),适用于数据查询、资源读取等场景(如浏览网页、搜索内容)。
-
注意:GET 请求的参数可见性高、长度有限制(不同浏览器 / 服务器限制不同,通常建议不超过 2KB),且不适合传输敏感数据(如密码、银行卡号)。
-
POST:核心作用是向服务器提交数据,请求参数封装在请求体中(而非 URL),适用于数据提交、资源更新等场景(如表单提交、文件上传)。
优势:参数隐藏性好、支持大体积数据传输,且可通过不同的Content-Type适配多种数据格式(如表单数据、JSON、文件流)。
1.2 HTTP 请求状态码:含义与应用
状态码是服务器对请求结果的 “反馈信号”,通过三位数字快速判断请求状态,核心常用状态码如下:
| 状态码 | 类别 | 含义 | 典型场景 |
|---|---|---|---|
| 200 | 成功 | 请求已被服务器正常处理并返回数据 | 正常打开网页、API 调用成功 |
| 302 | 重定向 | 临时跳转,服务器会通过Location头指定新地址 |
登录后跳转到首页、临时维护页面跳转 |
| 304 | 缓存 | 客户端请求的资源未更新,直接使用本地缓存 | 重复访问同一网页(如刷新未修改的文章) |
| 404 | 客户端错误 | 服务器无法找到请求的资源 | 访问不存在的 URL(如输入错误的网页地址) |
| 405 | 客户端错误 | 服务器不支持当前请求使用的方法 | 用 GET 请求访问仅允许 POST 的接口 |
| 500 | 服务器错误 | 服务器内部代码异常或配置错误 | 后端程序报错(如数据库连接失败) |
1.3 User-Agent(UA)头:概念、解析与伪造漏洞
1.3.1 UA 头的核心作用
UA 头是 HTTP 请求中用于标识客户端身份的关键字段,服务器通过 UA 头判断客户端的操作系统、浏览器类型及版本,进而实现 “页面适配” 或 “访问控制”:
-
页面适配:如识别到移动端 UA(如
Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Mobile/15E148 Safari/604.1),返回移动端优化页面; -
访问控制:部分网站会禁止低版本浏览器(如 IE8 及以下)访问,通过 UA 头拦截不符合要求的请求。
1.3.2 UA 头实例解析
以示例 UA 头为例,各字段含义清晰可拆:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36
-
Windows NT 10.0; Win64; x64:客户端操作系统为Windows 10 64 位; -
AppleWebKit/537.36:浏览器内核(Chrome、Safari 等主流浏览器均基于此内核); -
Chrome/139.0.0.0:浏览器类型为Google Chrome,版本号为 139.0.0.0; -
Safari/537.36:兼容标识(因 Chrome 内核源自 Safari,保留该字段以适配部分服务器判断逻辑)。
1.3.3 UA 头伪造漏洞的利用
若服务器仅依赖 UA 头进行身份验证(如 “仅允许特定浏览器访问”),未做其他校验,则存在 “UA 伪造漏洞”,利用步骤如下:
-
抓包:使用 Burp Suite(BP)、Fiddler 等工具捕获 HTTP 请求;
-
修改:在请求头中替换 UA 字段为目标值(如将 PC 端 UA 改为指定的 “LT 官方浏览器” UA);
-
重放:将修改后的请求发送给服务器,绕过 UA 校验逻辑。
1.4 HTTP 返回头(请求头)分析:关键字段与价值
以百度抓包实例为例,拆解 HTTP 请求中核心字段的含义与分析价值,帮助理解 “如何通过请求头挖掘信息或漏洞”:
百度请求头实例(精简版)
http
GET / HTTP/1.1
Host: www.baidu.com
Cookie: BAIDUID_BFESS=D2865BCB81FE5F26218794ED0568EC52:FG=1; BIDUPSID=D2865BCB81FE5F26218794ED0568EC52; ...
Referer: https://www.baidu.com/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ... Chrome/139.0.0.0 ...
Sec-Ch-Ua-Platform: "Windows"
Accept: application/json, text/javascript, */*; q=0.01
核心字段分析
| 字段名 | 含义 | 分析价值 |
|---|---|---|
| Host | 指定请求的目标服务器域名 / IP | 确认请求的目标地址,可用于判断是否存在 “主机头攻击” 漏洞(如通过修改 Host 指向恶意服务器) |
| Cookie | 存储客户端与服务器的会话信息(如登录状态、用户偏好) | 1. 修改 Cookie 值可能触发 “越权漏洞”(如将普通用户 ID 改为管理员 ID);2. 分析 Cookie 的有效期、加密状态,可判断会话安全性(如是否存在 “未设置 HttpOnly” 导致 XSS 窃取 Cookie 的风险) |
| Referer | 标识当前请求的 “来源页面”(即用户从哪个页面跳转过来) | 1. 服务器可通过 Referer 实现 “防盗链”(如仅允许从本站跳转的请求访问图片资源);2. 伪造 Referer 可绕过部分防盗链或访问控制逻辑(如本题中需伪装来源为www.ltyyds.com) |
| Sec-Ch-Ua-Platform | 补充标识客户端操作系统(与 UA 头功能重叠,为现代浏览器新增字段) | 辅助服务器判断客户端环境,若仅依赖该字段做控制,可通过修改该字段绕过限制 |
| Accept | 客户端可接收的响应数据格式(如 JSON、HTML、JavaScript) | 帮助服务器返回适配的响应格式,若格式不匹配可能导致请求失败(如客户端仅接收 JSON,服务器返回 HTML) |
1.5 POST 与 GET 的核心区别(实战维度)
| 对比维度 | GET | POST |
|---|---|---|
| 参数位置 | 拼接在 URL 中(可见) | 封装在请求体中(隐藏,需抓包查看) |
| 数据长度 | 受 URL 长度限制(通常≤2KB) | 无明确限制(由服务器配置决定,支持大文件传输) |
| 安全性 | 低(参数暴露在 URL 中,易被日志记录、缓存捕获) | 较高(参数隐藏,需抓包才能查看,适合敏感数据) |
| 缓存特性 | 可被浏览器缓存(如刷新页面时直接使用缓存结果) | 默认不被缓存(需手动配置缓存策略) |
| 幂等性 | 幂等(多次请求结果一致,如查询同一数据) | 非幂等(多次请求可能产生不同结果,如重复提交订单) |
实战示例补充
-
GET 请求示例(注意请求头后需加空行,请求体可空):
http
GET /name.php?name=benben HTTP/1.1
Host: 172.250.250.4
(此处为请求头后的空行,请求体为空)注意:
HTTP/1.1是 HTTP 协议版本(而非请求方法),用于定义请求 / 响应的传输规则(如长连接、管道化传输等)。 -
POST 请求示例(需指定
Content-Type和Content-Length,确保与请求体匹配):http
POST /pages/search.isp HTTP/1.1
Host: 127.0.0.1
Content-Type: application/x-www-form-urlencoded # 表单数据格式
Content-Length: 6 # 请求体“wk=SQL”共6个字符(含等号)
wk=SQL # 请求体(参数内容)关键说明:
Content-Type为 MIME 类型(参考
二、题目

打开题目我们发现,题目提示用HS请求试试,所以此时我们可以通过抓包,进行更改包,即更改图中位置(这里最好发送到重放器)


将请求方式改为HS后,发送,提示用本地地址才可以,此时需要添加X-Forwarded-For板块(这类可以参考文章:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Reference/Headers/X-Forwarded-For)

得到提示是从www.ltyyds.com得来的,所以此时,需要用到Referer

得到新的提示,只有LT为官方的浏览器,此时,只需要将User-Agent进行更改即可

于是乎成功得到了flag

浙公网安备 33010602011771号