xff:
很多HTTP代理会在HTTP协议头中添加X-Forwarded-For
头,用来追踪请求的来源。
X-Forwarded-For
的格式如下:
X-Forwarded-For: client1, proxy1, proxy2
X-Forwarded-For
包含多个IP地址,每个值通过逗号+空格分开,最左边(client1)是最原始客户端的IP地址,如果有多层代理,每一层代理会将连接它的客户端IP追加在X-Forwarded-For
右边。
一般的客户端发送HTTP请求没有X-Forwarded-For
头的,当请求到达第一个代理服务器时,代理服务器会加上X-Forwarded-For
请求头,并将值设为客户端的IP地址(也就是最左边第一个值),后面如果还有多个代理,会依次将IP追加到X-Forwarded-For
头最右边,最终请求到达Web应用服务器,应用通过获取X-Forwarded-For
头取左边第一个IP即为客户端真实IP。
但是如果客户端在发起请求时,请求头上带上一个伪造的X-Forwarded-For
,由于后续每层代理只会追加而不会覆盖,那么最终到达应用服务器时,获取的左边第一个IP地址将会是客户端伪造的IP。伪造X-Forwarded-For
头只需加上X-Forwarded-For
头就可以
referer:
HTTP 请求的头信息里面,Referer
是一个常见字段,提供访问来源的信息。这个字段是可选的。客户端发送请求的时候,自主决定是否加上该字段。
具体操作
使用burp抓包,并根据提示设置xff为123.123.123.123:
X-Forwarded-For:123.123.123.123
发现又出现新的提示”必须来自于谷歌“ 。因此考虑到设置referer。
根据提示继续设置referer:
Referer:https://www.google.com
成功获得flag。