1. 开打之前:CTFHub的HTTP协议题到底在考什么
如果你是刚接触CTF(Capture The Flag)Web方向的新人,大概率会被推荐先刷CTFHub技能树。而技能树的第一关,就是“Web前置技能-HTTP协议”。这组题看起来简单,但它几乎是整个Web安全的地基——你后面遇到的XSS、SSRF、文件上传、命令注入,本质上都是在和你已经掌握的HTTP请求做文章。我见过不少朋友上来就刷XSS、SQL注入,结果碰到一个改了请求方法、加了自定义Header的题目就懵了,就是因为前置技能没打牢。
CTFHub的HTTP协议模块,说人话就是:让你用“发请求-看响应”这套基本动作,把HTTP协议里最常被利用的几个点全过一遍。包括请求方式、基础认证、响应包源码、302跳转、Cookie、以及弱口令爆破。这些考点不光CTF里用得上,以后你去测真实业务系统、做漏洞挖掘,遇到的基本也是这些思路——判断服务端对请求的信任边界在哪里,然后顺着这条线去试探。
这篇攻略我会从最底层的协议概念讲起,再对照CTFHub的关卡逐个拆解,最后把我刷题时踩过的坑和常用的工具操作一并整理出来。不管你之前有没有系统学过HTTP,照着这个顺序走一遍,整个前置技能模块基本就能稳稳拿下了。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心概念准备:不懂这几个名词,做题就是瞎猜
2.1 一个HTTP请求长什么样
很多新手看到抓包工具里那一大堆Key-Value就头大,其实不用怕。HTTP请求本质上就是一段有固定格式的文本,由浏览器或工具帮你组装好,发到服务器上。一个最普通的GET请求长这样:
http复制GET /index.php?name=admin HTTP/1.1
Host: challenge.ctfhub.com
User-Agent: Mozilla/5.0
Accept: */*
Cookie: PHPSESSID=abc123
第一行叫请求行,由三部分组成:请求方法(GET)、请求路径(含查询参数)、协议版本。从第二行开始一直到空行之前,都是请求头,每一行都是一个键值对,用冒号分隔。空行之后的内容是请求体,GET请求一般没有请求体,POST、PUT等请求则会把参数放在这里。
http复制POST /login.php HTTP/1.1
Host: challenge.ctfhub.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
username=admin&password=123456
看到这里你应该就能理解:你发给服务器的所有信息,要么在请求行里,要么在请求头里,要么在请求体里。 CTFHub的HTTP协议关卡,考的就是服务端会额外信任请求头里的哪些字段,或者会用哪些字段做判断。你只要学会改这三段里的内容,很多题就直接通了。
2.2 响应里藏着的东西往往比页面更重要
服务器返回给你的内容同样分三部分:状态行、响应头、响应体。状态行里的三位数字叫状态码,是服务端告诉你这次请求结果如何的“暗号”。
| 状态码 | 含义 | CTF里的典型场景 |
|---|---|---|
| 200 | 请求成功 | 正常拿到页面 |
| 301/302 | 重定向 | 服务器让你去另一个地址,但flag可能在响应头里 |
| 401 | 未认证 | 需要用户名密码,对应基础认证关卡 |
| 403 | 禁止访问 | 权限不够 |
| 404 | 不存在 | 路径错了 |
| 500 | 服务器错误 | 可能参数没传对 |
我自己刷这组题最大的体会是:做题时不要只盯着浏览器渲染出来的页面看,要养成看响应头和响应体的习惯。 CTFHub的302跳转题就是典型——页面跳来跳去,但flag就明晃晃地写在第一次响应的Location头旁边,你只要在开发者工具里点开那条请求就能看到。后面做SSRF、文件包含的时候,响应头里藏信息的操作也经常出现,这个习惯越早养成越好。
2.3 两种认证方式:Basic认证和Cookie
HTTP协议里的认证方式,CTFHub前置技能里主要涉及两种。
第一种是基础认证(Basic Authentication),就是你在浏览器里看到的那种弹窗,让你输入用户名和密码。它的原理很简单:浏览器把“用户名:密码”这段字符串用Base64编码,然后放到Authorization请求头里发给服务器。注意,Base64不是加密,它只是一种编码方式,任何人拿到这串字符都能解码还原出明文。所以CTFHub考这个点的时候,要么是让你解码,要么是让你爆破弱口令。
第二种是Cookie认证。你登录网站后,服务端在你浏览器里种下一个Cookie,之后每次请求都会带上它,服务端靠这个字段认出你是谁。很多CTF题目的考点就是“服务端信任了Cookie里的某个值”,比如用admin=0表示普通用户、admin=1表示管理员,你把它改成1再发一次请求,权限就上去了。CTFHub的Cookie题就是这种思路,改改值就出flag。
2.4 工具准备:开发者工具、Burp Suite、curl
工欲善其事,必先利其器。刷CTFHub这几关,有三样东西够用了。
浏览器开发者工具是最快上手的。按F12打开,切到Network面板,勾选Preserve log(保留日志,防止跳转
