好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

不常用的注入–利用IP地址进行注入 - 网站安全

以前曾经QQ空间发布过关于IP注入攻击的文章,这种注入其实没什么神秘,只是很多时候被忽略了。         IP伪造有几种途径,一种是通过是修改IP数据包,有兴趣的可以去看看IP数据包的结构,还有一种就是利用修改http头信息来实现IP伪造。涉及到[客户端]IP的通常使用3个环境变量:$_SERVER['HTTP_CLIENT_IP']和$_SERVER['X_FORWARDED_FOR']还有$_SERVER['REMOTE_ADDR']实际上,这3个环境变量都有局限性。前两个是可以随意伪造。只要在发送的http头里设置相应值就可以,任意字符都可以,而第3个环境变量,如果用户使用了匿名代理,那这个变量显示的就是代理IP。       

 //获取客户端IP function getIP() {     $cip = '';     if($_SERVER('HTTP_CLIENT_IP') && strcasecmp($_SERVER('HTTP_CLIENT_IP'), 'unknown')) {         $cip = $_SERVER('HTTP_CLIENT_IP');     } elseif($_SERVER('HTTP_X_FORWARDED_FOR') && strcasecmp($_SERVER('HTTP_X_FORWARDED_FOR'), 'unknown')) {         $cip = $_SERVER('HTTP_X_FORWARDED_FOR');     } elseif($_SERVER('REMOTE_ADDR') && strcasecmp($_SERVER('REMOTE_ADDR'), 'unknown')) {         $cip = $_SERVER('REMOTE_ADDR');     } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {         $cip = $_SERVER['REMOTE_ADDR'];     }     return $cip; }

   根据前面说的,这段代码 如果我能伪造 HTTP_CLIENT_IP,只要使得它不是 unkown,那就能让$cip毫无保留的接受我们伪造的数据,然后:

1 $db->row_delete("online","userid='$userid' or ip='".getIP()."'");

   这句实际执行的是(假设当前用户id是1了,这是无关紧要的) delete from online where userid=1 or ip='$ip'

   假如我伪造http_client_ip伪造为 ';delete from `user`#,上述sql语句就会变成

   delete from online where userid=1 or ip='';delete from `user` (因为#后的被注释掉了),很危险吧。

  攻击脚本就不发了,很简单,伪造个头就可以了。  

 

文章作者:荆棘鸟

查看更多关于不常用的注入–利用IP地址进行注入 - 网站安全的详细内容...

  阅读:119次