请求方式 — 考点精讲
前置知识:HTTP 协议基础 — 先了解 HTTP 协议基础再来看本考点
原理精讲 — HTTP 方法是什么?为什么可以自定义?
请求报文的第一行就是方法
客户端发给服务器的 HTTP 请求,本质是一段纯文本:
CTFHUB /index.php HTTP/1.1 <- 请求行: [方法] [路径] [HTTP版本]
Host: www.example.com <- 请求头
User-Agent: Mozilla/5.0
Cookie: session=abc123
<- 空行(分隔头部和正文)
body=value <- 请求体(GET 请求没有)
关键在第一行(请求行)的第一个单词——方法(Method)。
方法名只是一个 token,不是硬性限制
RFC 7231 对方法的定义是:
方法是一个 token,请求的目的是指示服务器对目标资源执行什么操作。
协议规范只定义了 GET/POST/PUT/DELETE 等标准方法,但没有限制你只能用这些。服务器端通过读取请求行第一个单词来判断方法,然后交给应用程序代码处理。所以发一个 CTFHUB /index.php HTTP/1.1,服务器看到的就是”请求方法等于 CTFHUB”。
服务器端伪代码:
$method = $_SERVER['REQUEST_METHOD']; // 取请求行第一个单词
if ($method === "CTFHUB") {
echo $flag;
} else {
echo "请使用CTFHUB方法访问";
}同一个考点在真实场景
自定义方法本身不是漏洞——是服务器把方法名当成身份判断/权限判断的依据才是。真实世界中:某些网关/WAF 只检查 GET/POST 而放行未知方法;某些 API 用方法名做路由鉴权。CTF 里最常见的形态就是”用非标准方法访问就给你 flag”。
注意事项
| 易错点 | 说明 |
|---|---|
| 方法区分大小写 | CTFHUB ≠ ctfhub,服务器做精确比较时大小写错就失败 |
| 用 curl 发自定义方法 | curl -X CTFHUB 目标/index.php(-X 指定任意方法) |
| 用 Burp 发自定义方法 | Repeater 里直接改请求行第一行,不要用下拉菜单 |
| 404 还是 405 | 报 “HTTP Method Not Allowed” 时记得请求 index.php(提示里常写明) |
| 方法名拼错 | 提示是 CTF**B,中间的星号就是 HU,照抄全名 |
题目解法
CTFHub 技能树位置:CTFHub → Web → Web 前置技能 → HTTP 协议 → 请求方式
解法(curl 终端):
# 1. 先看页面提示(通常写着 Use CTF**B Method, I will give you flag)
curl -s http://目标/
# 2. 用题目要求的方法请求 index.php
curl -X CTFHUB -v http://目标/index.php
# 响应体里就是 flag解法(Burp / 浏览器 F12):
- 打开页面 → F12 Network 或 Burp 抓包
- 找到请求,把请求行
GET /index.php HTTP/1.1改成CTFHUB /index.php HTTP/1.1 - 重放,响应里拿到 flag
同类变式(请求头伪造家族)
| 考点 | 尝试 |
|---|---|
| 自定义方法(本题) | curl -X CTFHUB |
| Host 头 | curl -H "Host: 特定值" |
| User-Agent | curl -A "某浏览器" |
| Referer | curl -e "期望来源" |
| X-Forwarded-For | curl -H "X-Forwarded-For: 127.0.0.1"(伪造 IP) |
| Content-Type | curl -H "Content-Type: application/json" |
核心知识点总结
| 概念 | 说明 |
|---|---|
| 请求行 | [方法] [路径] [HTTP版本],方法是最左边的 token |
| 方法本质 | 字符串标识,协议不限制只能用标准方法 |
| 服务器处理 | 读请求行第一个单词做判断,与协议规范无关 |
| curl -X | 指定任意请求方法 |
| 方法大小写 | 敏感,照抄提示原文 |
| 防御角度 | 不要用方法名做唯一鉴权依据 |
关联教程
- HTTP 协议基础 — CTF 中 HTTP 相关考点总览
- 302 跳转 — 重定向响应中隐藏 flag
- Cookie — 篡改 Cookie 获取 flag
- 基本认证 — HTTP Basic 认证绕过与爆破
- 源代码 — 响应包源码中查找 flag
- 01-计算机网络基础 — OSI 模型与 TCP/IP 协议栈
- 02-Web技术基础 — HTTP 协议完整解析
- 01-Web基础与HTTP协议 — Web 安全实战场景
- Web 方向总览 — Web 方向 CTF 题型与思路总览
- 总目录与快速查询 — 红队完整知识体系