sun 发表于 2015-11-4 11:36:39

mysql注入篇:后台登陆漏洞案例 之 任意用户名+空密码

$name = $_POST['username']; // 接收用户名
      $pwd = $_POST['pwd']; // 接收用户密码
      //var_dump(trim($pwd) ); die();

      //漏洞一---以下注释代码都不起作用
      //代码方案1
      //$name!='' or $pwd!='' or header('Location: ../../index.php');
      //代码方案2
      // if( (trim($name)=="" && trim($pwd)=="") || trim($name)=="" || trim($pwd)=="" )
      // {
      //         header('Location: ../../index.php');
      // }

      $user = new User(); //实例化User模型
      $res = $user -> getUserInfoByName($name);// 返回的是数据库中的pwd

      //漏洞二---以下代码引起 任意用户名+空密码漏洞
      //if($res['pwd'] == $pwd)

      //修正后的代码
      if($res['pwd'] == $pwd&& $pwd!='')   //不用用sizeof($pwd)!=0 因为sizeof('')=1 必须要加 $pwd!=''验证 否则会引 任意账号和空组合漏洞
      {
                $_SESSION['w_user'] = $name; // 存入用户名
                //var_dump($_SESSION);
                header('Location: ../../ctl/home/micblog.ctl.php?a=showindex'); // 跳转到首页
      }else{
                header('Location: ../../index.php'); //跳转回登陆页
      }

sun 发表于 2015-11-4 11:54:05

众多情况下会出现,sizeof('')=1,不能用sizeof去验证用户名和密码
编译器在编译时sizeof('')会安插的char,就引起了sizeof('')=1的情况出现
资料参考:http://bbs.csdn.net/topics/390483677
页: [1]
查看完整版本: mysql注入篇:后台登陆漏洞案例 之 任意用户名+空密码