CTFhub HTTP Writeup
CTFHUB-CTF-Web-Web前置技能-HTTP协议
一、请求方式
1.打开Burp的代理服务(默认:127.0.0.1:8080)
2.打开所给网站,根据提示,Method应该为CTF**B的形式
3.修改Method为”CTFHUB”
4.发送(Forward)修改后的请求
5.看Response(响应),找flag{XXXXX}
6.如果没有找到,根据提示,应在URL为”index.php”的相应里找,所以需要多次进行尝试,一直到找到flag
HTTP/1.1协议定义的8种请求方法:
GET(直接获取),POST(发送数据),PUT(新增数据记录),DELETE(删除),HEAD(判断是否存在/获取响应头),OPTIONS(获取支持的请求方式),TRACE(修改),CONNECT(建立与代理服务器的隧道连接).
二、Cookie
1.代理,拦截,请求后,在响应中找到Cookie相关信息admin:=0
2.将响应中的内容放入“重发器”(Repeater)中,在左侧写上“Cookie: admin=0”,通过“Upgrade-Insecure-Requests: 1”提示得出,应修改admin=1,再次发送(send),得到flag {可通过看上面的Edited是否是✓,状态码是不是200(成功)}
- “Upgrade-Insecure-Requests” 是现代浏览器中一个重要的安全机制,通常出现在 HTTP 头部或 HTML 元标签中,其核心作用是将网页中的非安全(HTTP)请求自动升级为安全(HTTPS)请求。
三、 302跳转(重定向)
- 3xx(重定向状态码):302(临时重定向),请求的资源临时移动到新的 URL 。
1.代理,多次请求,拦截,在URL为“index.html”的响应中提示**“<a href=”index.php”>”**
href是 HTML 中的一个重要属性,主要用于为<a>(超链接)、<link>(外部资源链接)等标签指定链接目标1.标签后的href
1 | <!-- 外部URL --> |
- 2.
<link>标签中的href
1 | <!-- 引入外部CSS --> |
2.将响应内容放入“重发器”(Repeater)中,将URL(index.html)改为index.php,发送后,可得flag
- URL:统一资源定位符,用于定位网络上的资源,格式为 “协议:// 主机名:端口号 / 路径?查询参数 #片段标识符”,例如 “https://www.example.com/index.html?name=user#section1”。
3.或者直接用 curl 命令访问 index.php 即可得到 flag
- curl使用方法:
- 基本语法:curl [选项] [URL]
发送HTTP请求 要获取某个URL的内容,直接使用
curl [URL]即可:1
curl https://example.com
若想将内容保存到文件,可使用
-o或--output选项:1
bash curl -o output.html https://example.com
发送带请求头的HTTP请求 借助
-H或--header选项,能够添加自定义请求头:1
bash curl -H "Content-Type: application/json" https://api.example.com/data
POST请求 使用
-X POST指定请求方法,并用-d或--data传递请求体:1
bash curl -X POST -d "param1=value1¶m2=value2" https://api.example.com/submit
若要发送JSON数据,可这样操作:
1
bash curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com/json
处理认证 对于需要用户名和密码的基本认证,可使用
-u或--user选项:1
bash curl -u username:password https://api.example.com/protected
跟随重定向 当遇到HTTP重定向时,使用
-L或--location选项可以让curl自动跟随:1
bash curl -L https://example.com/redirect
显示响应头信息 使用
-i或--include选项,能够在输出中包含响应头:1
bash curl -i https://example.com
下载文件 若要显示下载进度条,可使用
-#选项:1
bash curl -# -o file.zip https://example.com/file.zip
若想断点续传已下载的文件,则使用
-C -选项:1
curl -C - -o file.zip https://example.com/file.zip
设置超时时间 通过
-m或--max-time选项,可以设置整个请求的最大超时时间(单位为秒):1
bash curl -m 10 https://example.com
代理设置 使用
-x或--proxy选项,能够通过代理服务器发送请求:1
bash curl -x proxy.example.com:8080 https://example.com
其他常用选项 -
-s或--silent:静默模式,不显示进度条和错误信息。 --k或--insecure:跳过SSL证书验证。 --v或--verbose:显示详细的通信过程,便于调试。 这些都是curl的常见用法。实际使用时,你可以根据具体需求组合不同的选项。如果想了解更多详细信息,可通过curl --help查看帮助文档,或查阅man curl获取完整手册。
四、基础认证
1.代理,拦截。
在响应中发现“Do u know admin?”,猜测用户名应该为admin。
其请求中中,Basic 表示是
基础认证, 后面的YWRtaW46NjUOMzIx==用base64解码后是aaa:bbb的形式, 也就是我们之前输入的账号:密码,使用 BurpSuite 进行基础认证爆破。
2.将请求发送到Intruder里(如图):
将 Basic 后面 base64 部分添加为 payload position
在 Payloads 选项卡下,选择 Payload Type 为 SimpleList, 然后在 Payload Options 中点击 load 加载密码字典
Payload Processing -> Add-> Add Prefix(添加前缀)-> 输入
admin:Payload Processing -> Add-> Encode(添加一个编码方式)-> 选择 Base64 Encode
Payload Encode 取消勾选的 URL-encode, 否则 base64 之后的 = 会被转成 %3d
然后按 Start Attack ,然后按 Status 排序,看到状态码出现 200 的,即爆破成功
在对应的响应中,找到flag
五、响应包源代码
- 考点:响应包源代码查看
1.代理,拦截。
2.查看响应包,在其中找到flag

