[CTF/网络安全] 攻防世界 xff_referer 解题详析
- XFF及referer
- XFF格式
- referer格式
- 姿势
- 总结
题目描述:X老师告诉小宁其实xff和referer是可以伪造的。
XFF及referer
X-Forwarded-For
(简称 XFF)是一个 HTTP 请求头部字段,它用于表示 HTTP 请求的客户端 IP 地址,尤其是当请求通过一个中介代理或负载均衡器时。该字段的值通常是一个逗号分隔的 IP 地址列表,其中第一个 IP 地址是最初连接到中介代理或负载均衡器的客户端 IP 地址。
Referer
是另一个 HTTP 请求头部字段,它包含了当前请求的来源页面 URL 地址,即前一个页面的 URL 地址。该字段主要用于追踪用户行为和引荐来源等信息。
例如,当您在浏览器中访问一个页面时,您的浏览器会向服务器发送一个 HTTP 请求,并携带 Referer
头部字段,将上一个页面的 URL 地址传递给服务器。如果您从搜索引擎或其他网站跳转而来,则可以通过 Referer
字段追踪这个来源。
另外,当请求通过一个代理服务器或负载均衡器时,可以使用 X-Forwarded-For
头部字段来识别请求的真实客户端 IP 地址。因为在这种情况下,服务器只能看到请求的中介代理或负载均衡器的 IP 地址,而无法直接获取客户端的真实 IP 地址。通过查看 X-Forwarded-For
字段,服务器可以识别出原始客户端的 IP 地址,并进行相应处理和记录。
XFF格式
格式通常为:
X-Forwarded-For: <client>, <proxy1>, <proxy2>, ...
其中,各个组成部分的含义如下:
<client>
:客户端的真实 IP 地址,通常位于最后一个位置。<proxy1>
,<proxy2>
, …:HTTP 请求经过的代理服务器的 IP 地址,通常位于前面,按照从接近客户端到接近服务器的顺序排列。
例如,以下是一个 X-Forwarded-For
头部字段的示例:
X-Forwarded-For: 203.0.xxx.195 , 70.xxxx.3.18 , 150.xxxx.238
其中,客户端 IP 地址为 203.0.xxx.195,该请求经过了两个代理服务器,IP 地址分别为 70.xxxx.3.18 和 150.xxxx.238
referer格式
格式通常为:
Referer: <protocol>://<host>:<port>/<path>
其中,各个组成部分的含义如下:
<protocol>
:请求使用的协议,一般为 “http” 或 “https”。<host>
:请求的主机名或 IP 地址。<port>
:请求的端口号,如果是默认端口(HTTP 端口为 80,HTTPS 端口为 443),则可以省略。<path>
:请求的资源路径,包括文件名和查询字符串等。
例如,以下是一个 Referer
头部字段的示例:
Referer: https://www.google.com/search?qiushuo
其中,协议为 HTTPS,主机名为 www.google.com
,路径为 /search
,查询字符串为 ?qiushuo
姿势
抓包,在重放器请求包中添加IP地址
一般情况下,X-Forwarded-For 字段应该被插入到 HTTP 请求头部的第一个位置
Payload:X-Forwarded-For:123.123.123.123
页面回显如下:
根据页面回显,重放器请求包中添加referer
Payload:Referer:https://www.google.com
在 HTTP 请求头中,Referer 字段通常位于头部字段列表的第二个位置,紧随 Host 字段之后。
总结
该题结合抓包改包姿势考察XFF
及referer
,读者可躬身实践。
我是秋说,我们下次见。