PHP获取用户IP的方法及其绕过

更新下以前写的文章

网络中的代理

代理服务器是”网络信息的中转站”。在一般情况下,我们使用网络浏览器直接去连接其他Internet站点取得网络信息时,须送出Request信号来得到回答,然后对方再把信息以bit方式传送回来。代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器

正向代理与反向代理

正向代理是在用户端的,比如VPN的使用;反向代理是作用在服务器端的,对于一个用户的请求,会转发到多个后端处理器中的一台来处理该具体请求

X-Forwarded-For

当你使用了代理时,web服务器就不知道你的真实IP了,为了避免这个情况,代理服务器通常会增加一个叫做X-Forwarded-For的头信息,把连接它的客户端IP(即你的上网机器IP)加到这个头信息里,这样就能保证网站的web服务器能获取到真实IP

REMOTE_ADDR

代表的是当前HTTP请求的远程地址,即HTTP请求的源地址,HTTP协议在三次握手和发送响应报文时也是使用这个地址,如果请求者伪造REMOTE_ADDR地址,那么将无法收到HTTP响应报文

绕过IP检测

一些CTF题目中,会提示你不是本地用户,此时一般需要设置X-Forwarded-For127.0.0.1。除此之外,一些题目还不按常理出牌,需要多记录一些其他的字段:

X-Originating-IP

X-Real-IP

X-Remote-IP

X-Remote-Addr

Client-IP

还有一点,除了将IP设置为127.0.0.1外,还可能设置为localhost,记得以前安恒月赛有道题就是这样的,还是要准备好字典~