网站地图    收藏   

主页 > 后端 > 网站安全 >

74cms逻辑漏洞导致二次SQL注入变为普通SQL注入 -

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

[导读] 进行用户注册,然后抓取数据并且分析此文件:http: localhost 74cms_utf8 upload plus ajax_user php发送post数据包为:username=m 39;password=111111member_type=2email=m%40163 comtime=1401769527951...

进行用户注册,然后抓取数据并且分析此文件:
 
http://localhost/74cms_utf8/upload/plus/ajax_user.php
 
发送post数据包为:
 
username=m'&password=111111&member_type=2&email=m%40163.com&time=1401769527951&act=do_reg
 
如图所示:
 
分析代码下:
 
ajax_user.php(lines:90-96)
 
$register=user_register($username,$password,$member_type,$email);

  

if ($register>0)

{ 

$login_js=user_login($username,$password);

$mailconfig=get_cache('mailconfig');



if ($mailconfig['set_reg']=="1")




跟踪查看函数user_login 的文件fun_uer.php(lines:97-99)



if ($usinfo['password']==$pwd)

{



update_user_info($usinfo['uid'],true,true,$expire);

$login['qs_login']=get_member_url($usinfo['utype']);

$success=true;




跟踪查看update_user_info函数的文件fun_user.php(lines:130-139)

$user = get_user_inid($uid);

if (empty($user))

{

return false;

}

else

{

  $_SESSION['uid'] = intval($user['uid']);

  $_SESSION['username'] = $user['username'];

$_SESSION['utype']=intval($user['utype']);

}

 

 
发现此处被写入session的正是我们刚才写入数据库的那个username,此处根据uid从数据库取出来直接写入session,那么二次注入就出来了
 
 
 
在这个文件的(lines:185-190)
 
$setsqlarr['msgtoname']=$_SESSION['username'];

$setsqlarr['message']=$row['message'];

$setsqlarr['dateline']=$timestamp;

$setsqlarr['replytime']=$timestamp;

$setsqlarr['new']=1;

inserttable(table('pms'),$setsqlarr);

$log['loguid']=$_SESSION['uid'];

$log['pmid']=$row['spmid'];

inserttable(table('pms_sys_log'),$log);

 

 
 
可以看出来username实际上是用的session的值,故而当调用inserttable时就会导致sql注入,整个过程虽然复杂,但是其实转化为了一个最为普通的sql注入,危害还是比较大

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

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

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

添加评论