进入题目页面如下
ctrl+u查看源码
![](https://i-blog.csdnimg.cn/direct/26566c4973084cddb27ef7b78613a555.png)
进入查看
![](https://i-blog.csdnimg.cn/direct/718393892d114445aa16d5bf3efa7d6f.png)
提示不是来自https://Sycsecret.buuoj.cn
用burp suite抓包,右键发送到重放器,添加http请求头
Referer:https://Sycsecret.buuoj.cn
绕过
![](https://i-blog.csdnimg.cn/direct/25868cfc0c4d4a048351d3308cca40cb.png)
提示use "Syclover"
![](https://i-blog.csdnimg.cn/direct/87e0e1c120194226953d0c93af6bc4ed.png)
提示只允许本地访问此网页
HTTP头伪造
HTTP 头伪造是一种网络攻击技术,通过修改或伪造 HTTP 请求头中的信息来达到特定目的。
基本概念
在 HTTP 通信中,客户端(如浏览器)向服务器发送请求时会附带一系列的 HTTP 头信息,用于传递请求的相关元数据,例如请求方法、请求的资源路径、客户端的类型、支持的编码格式等。服务器在接收到请求后,会根据这些头信息来处理请求并返回相应的响应。HTTP 头伪造就是攻击者通过各种手段修改或伪造这些头信息,使服务器按照攻击者的意图进行处理。
常见伪造场景及原理
1. 伪造 User-Agent
头
原理 :User-Agent
头用于标识客户端的类型和版本信息,服务器可以根据这个信息来提供不同的服务或内容。攻击者可以伪造 User-Agent
头,模拟不同的客户端类型,例如将自己伪装成搜索引擎爬虫,绕过一些基于 User-Agent
的访问限制。
在 Python 中使用 requests
库伪造 User-Agent
头:
2. 伪造 Referer
头
原理 :Referer
头用于指示请求是从哪个页面跳转过来的,服务器可以根据这个信息来进行一些统计或访问控制。攻击者可以伪造 Referer
头,绕过基于 Referer
的访问验证,例如在一些网站中,只有从特定页面跳转过来才能访问某些资源,可以伪造 Referer
头来绕过这个限制。
import requests
headers = {
'Referer': 'http://trusted-site.com'
}
response = requests.get('http://example.com/protected-resource', headers=headers)
3. 伪造 X-Forwarded-For
头
原理 :在使用代理服务器的网络环境中,X-Forwarded-For
头用于记录客户端的真实 IP 地址。可以伪造这个头信息,隐藏自己的真实 IP 地址,或者将责任嫁祸给其他 IP 地址
X-Forwarded-For: 1.2.3.4
4. 伪造 Cookie
头
原理 :Cookie
头用于在客户端和服务器之间传递会话信息,服务器可以根据 Cookie
中的信息来识别用户身份。可以通过窃取或伪造 Cookie
头,冒充合法用户访问受保护的资源。
构造payload
X-Forwarded-For:127.0.0.1
最终得到flag
![](https://i-blog.csdnimg.cn/direct/f1f7346725ea48f7ad01d79dccdb0755.png)
X-Forwarded-For
(XFF)
是一个在 HTTP 协议中常用的头字段,主要用于在使用代理服务器的网络环境里,记录客户端的真实 IP 地址
X-Forwarded-For
是一个非标准的 HTTP 头字段,它不是 HTTP 协议规范的一部分,但被广泛应用于代理服务器和负载均衡器中。当客户端通过代理服务器向服务器发送请求时,服务器通常只能获取到代理服务器的 IP 地址,而无法直接获取客户端的真实 IP 地址。X-Forwarded-For
头字段的作用就是在请求经过代理服务器时,将客户端的真实 IP 地址追加到该字段中,以便服务器能够了解请求的原始来源。
工作原理
- 客户端发起请求:客户端向代理服务器发送 HTTP 请求。
- 代理服务器处理请求 :代理服务器接收到请求后,会在请求头中添加
X-Forwarded-For
字段,并将客户端的 IP 地址作为该字段的值。如果请求已经经过了多个代理服务器,每个代理服务器会将前一个代理服务器记录的X-Forwarded-For
字段值追加到新的X-Forwarded-For
字段中,多个 IP 地址之间用逗号和空格分隔。 - 服务器接收请求 :服务器接收到请求后,可以通过解析
X-Forwarded-For
字段来获取客户端的真实 IP 地址。