骑士人才系统4.2.3任意前台账号登录

颓废 2019年5月19日09:05:15评论471 views字数 2166阅读7分13秒阅读模式
摘要

它是用TP开发的,就简单分析一下~~~ 在它的Application/Home/Controller/MembersController.class.php中有如下代码:

它是用TP开发的,就简单分析一下~~~

在它的Application/Home/Controller/MembersController.class.php中有如下代码:

public function varify_email(){     $token = I('get.token','','trim');     $return_url_arr = array('1'=>U('Company/user_security'),'2'=>U('Personal/user_safety'));     if($token){         $token = str_replace(C('URL_HTML_SUFFIX'), '', $token);         $verify = explode("-", $token);         $uid = decrypt($verify[0]);         $email = decrypt($verify[1]);         // var_dump($uid,$email,encrypt('2'),encrypt('[email protected]'));exit;         $time = $verify[2];         if($time+3600*24>=time()){//24小时内有效             $userinfo = D('Members')->where(array('uid'=>$uid))->find();             if(!$userinfo){                 $this->error('邮箱验证失败!',$return_url_arr[$userinfo['utype']]);             }             $setsqlarr['email']=$email;             $setsqlarr['email_audit']=1;             if(false === $reg = M('Members')->where(array('uid'=>$uid))->save($setsqlarr)) $this->error('邮箱验证失败!',$return_url_arr[$userinfo['utype']]);             if(!$reg){                 $this->success("你的邮箱 {$email} 已经通过验证!",$return_url_arr[$userinfo['utype']]);                 return;             }             $user_visitor = new /Common/qscmslib/user_visitor;             $user_visitor->logout();             $user_visitor->assign_info($userinfo);             D('Members')->update_user_info($setsqlarr,$userinfo);             if ($userinfo['utype']=="1"){                 $r = D('TaskLog')->do_task($userinfo,23);             }else{                 $r = D('TaskLog')->do_task($userinfo,16);             }             write_members_log($userinfo,8001);             if($r['data']){                 $sub = '增加'.$r['data'].C('qscms_points_byname');             }else{                 $sub = '';              }             $this->success('邮箱验证通过!'.$sub,$return_url_arr[$userinfo['utype']]);         }else{             $this->error('该链接已过期',$return_url_arr[$userinfo['utype']]);         }     }     else     {         $this->error('链接无效',$return_url_arr[$userinfo['utype']]);     }   }

用户uid和email都是通过decrypt()解密得到的

$uid = decrypt($verify[0]); $email = decrypt($verify[1]);

中间用到了一个解密函数decrypt(),如下所示:

function decrypt($txt, $key = '_qscms') {     // $txt 的结果为加密后的字串经过 base64 解码,然后与私有密匙一起,     // 经过 passport_key() 函数处理后的返回值     $txt = passport_key(base64_decode($txt), $key);     // 变量初始化     $tmp = '';     // for 循环,$i 为从 0 开始,到小于 $txt 字串长度的整数     for ($i = 0; $i < strlen($txt); $i++) {         // $tmp 字串在末尾增加一位,其内容为 $txt 的第 $i 位,         // 与 $txt 的第 $i + 1 位取异或。然后 $i = $i + 1         $tmp .= $txt[$i] ^ $txt[++$i];     }     // 返回 $tmp 的值作为结果     return $tmp; }

我没有看解密函数是否可逆,只注意了key是固定值~~~因此,在前面我们可以构造出请求包进行邮箱验证。而且,在后面存在一个问题,验证完成之后直接登录了。

$user_visitor = new /Common/qscmslib/user_visitor; $user_visitor->logout(); $user_visitor->assign_info($userinfo); D('Members')->update_user_info($setsqlarr,$userinfo);

骑士人才系统4.2.3任意前台账号登录

骑士人才系统4.2.3任意前台账号登录

作者:该隐

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
颓废
  • 本文由 发表于 2019年5月19日09:05:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   骑士人才系统4.2.3任意前台账号登录http://cn-sec.com/archives/68070.html

发表评论

匿名网友 填写信息