网站地图    收藏   

主页 > 后端 > 网站安全 >

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

来源:自学PHP网    时间:2015-04-17 14:47 作者: 阅读:

[导读] 以前曾经QQ空间发布过关于IP注入攻击的文章,这种注入其实没什么神秘,只是很多时候被忽略了。 IP伪造有几种途径,一种是通过是修改IP数据包,有兴趣的可以去看看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` (因为#后的被注释掉了),很危险吧。

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

 

文章作者:荆棘鸟

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论