题目描述
X老师告诉小宁其实 xff 和 referer 是可以伪造的。
Solution
Referer 是 HTTP Request Header 的一个字段,服务器只要查看 Referer 就能知道请求的 URI 是从哪个 Web 页面发起的。
XFF 指的是 X-Forwarded-For,它也是 HTTP Request Header 的一部分,是用来识别通过 HTTP 代理或负载均衡方式连接到 Web 服务器的客户端最原始的 IP 地址的 HTTP 头字段。
如果没有 XFF 或者另外一种相似的技术,所有通过代理服务器的连接只会显示代理服务器的 IP 地址,而非连接发起的原始 IP 地址,这样的代理服务器实际上充当了匿名服务提供者的角色,如果连接的原始 IP 地址不可得,恶意访问的检测与预防的难度将大大增加。 XFF 的有效性依赖于代理服务器提供的连接原始 IP 地址的真实性,因此,XFF 的有效使用应该保证代理服务器是可信的,比如可以通过创建可信服务器白名单的方式。
进入场景,题目要求 IP 地址必须是 123.123.123.123
,那我们使用命令行工具 httpie,在 Request Header 里加入一行:
X-Forwarded-For: 123.123.123.123
发送请求:
观察 Response 可知我们还需要在 Request Header 添加 Referer 项:
即可得到 Flag。