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'); //跳转回登陆页
} 众多情况下会出现,sizeof('')=1,不能用sizeof去验证用户名和密码
编译器在编译时sizeof('')会安插的char,就引起了sizeof('')=1的情况出现
资料参考:http://bbs.csdn.net/topics/390483677
页:
[1]