知识点:empty()函数;HTTP请求头中伪造客户端IP地址
X-Forwarded-For绕过指定IP地址,方法:HTTP
头添加X-Forwarded-For:1.1.1.1
(1)PHP empty()函数 用于检查一个变量是否为空
empty() 判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于 FALSE,那么它会被认为不存在。
empty() 并不会产生警告,哪怕变量并不存在。 这意味着 empty() 本质上与 !isset($var) || $var == false 等价。
当 var 存在,并且是一个非空非零的值时返回 FALSE 否则返回 TRUE。
(2)_SERVER的问题
https://www.cnblogs.com/rendd/p/6182918.html
看到这几行代码,我们不难发现,如果要的到flag,那么IPs=="1.1.1.1,而此时我们输出的结果是“错误!你的IP不在访问列表之内!”,
显然我们的IP不是1.1.1.1.那么我们就应该想办法修改IP地址为1.1.1.1,这样便能得到结果。
首先查看是否存在$_SERVER["HTTP_CLIENT_IP"],如果存在IP就是它,
否则接下来看$_SERVER["HTTP_X_FORWARDED_FOR"],
最后看$_SERVER["REMOTE_ADDR"],如果以上三个变量都不存在的话则返回0.0.0.0。
X-Forwarded-For
当我们用代理服务器的时候,X-Forwarded-For这个值记录的是我们客户端原本的IP地址,而非代理服务的IP,简言之就是用来识别经过HTTP代理后的客户端IP地址。X-Forwarded-For在头信息中对应的就是X-Forwarded-For,是可以进行伪造的。
首先我们来讲讲伪造X-Forwarded-For的方法,我们可以直接使用Firefox的X-Forwarded-For header来实现,操作非常的简单:
设置好后,刷新页面,
二:
用Burpsuite 抓包
右键发送到Repeater
添加一个X-Forwarded-For:1.1.1.1或者Client-ip:1.1.1.1,然后GO
右边返回里
原文:https://www.cnblogs.com/liqik/p/10611181.html