题目入口:http://web.jarvisoj.com:32774/
这道题的提示很明显,就是要求我们访问的时候,等效于127.0.0.1的本地访问
根据http协议,我们可以伪造访问的ip,将我们的访问ip改成127.0.0.1
我们打开题目
由于ie本身是没有直接修改http header的功能,所以我们需要下载其他有该功能的浏览器。例如谷歌、火狐。
而我电脑上已经安装了火狐,那么我们就使用火狐来修改http header的ip
在火狐上打开该网页,然后F12,然后在网络这里选中对应返回给我们网页数据的封包,然后点击右边的 ##编辑和重发
接着会出现以下情况
我们在结尾加入
1 | X-Forwarded-For: 127.0.0.1 |
注意 : 后面有空格
然后点击重新发送,会出现以下图片
得到flag:PCTF{X_F0rw4rd_F0R_is_not_s3cuRe}
###总结:从这个案例中,我们发现http协议中是可以伪造本地访问的,对于 X-Forwarded-For 这个字段,我们以后开发网站的时候要着重考虑一下。
接下来我们来具体分析一下XFF(X-Forwarded-For)这个字段的具体用途,它一般使用在代理服务器中。
1 | X-Forwarded-For: client1, proxy1, proxy2, proxy3 |
其中的值通过一个 逗号+空格 把多个IP地址区分开, 最左边(client1)是最原始客户端的IP地址, 代理服务器每成功收到一个请求,就把请求来源IP地址添加到右边。请求刚从client1中发出时,XFF是空的,请求被发往proxy1;通过proxy1的时候,client1被添加到XFF中,之后请求被发往proxy2;通过proxy2的时候,proxy1被添加到XFF中,之后请求被发往proxy3;通过proxy3时,proxy2被添加到XFF中,之后请求的的去向不明,如果proxy3不是请求终点,请求会被继续转发。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 咲夜南梦's 博客!
评论