等我们登陆discuz的时候,势必会产生cookie信息,下面我们去解开discuz登陆的_auth信息.
1、在我们自己的主网站上面先打印出来所有的cookie
2、我们发现会有好几个信息,然后我们找到*****_auth 以及******_saltkey 类似于这种的,因为前缀是根据不同的网站生成出来的.
3、然后我们去解密:
首先包含ucenter文件:
Yii::import('application.vendor.*');
include_once 'ucenter.php';
如果你不知道这个包含是啥意思,或者不知道这里的文件哪里来的,可以看看我的博客中的其他博文,从头看即可明白,这里就不多说了.
$authkey = "*********";这个是秘钥。在config/config_global.php文件中的$_config['security']['authkey'] = '*******';就是这个,你看看你自己的是什么就是什么.
$salt = $_COOKIE['H0NF_2132_saltkey'];//这个是discuz产生的随机数
$key = md5($authkey.$salt);//解密key
$info = uc_authcode($_COOKIE['H0NF_2132_auth'], 'DECODE',$key);
然后打印出来$info得到的结果类似于这种:
bf6b7e1ddd3da431342f550eb8ce19e5 1
我们发现后面有个1或者其他数字,这个数字表示你的用户id,这样我们就获得的用户信息,然后根据这个id获取ucenter的用户信息即可.
至于我是怎么知道这里的key就是salt 和authkey的md5数据.
我们看他是如何加密的:
登陆时走了authcode这个方法(在source/function/function_core.php).
我们看到这段代码:$key = md5($key != '' ? $key : getglobal('authkey'));
发现他走了getglobal方法体
然后发现里面有个这个东西:global $_G; 说明这里声明了全局变量$_G。
呢么$_G是在哪里定义的呢。
我们找到source/class/discuz/discuz_application.php,然后就可以看到他定义的$_G这个全局变量数组了,我们发现里面就有这个authkey这个东西。
然后我们找到:$this->var['authkey'] = md5($this->var['config']['security']['authkey'].$this->var['cookie']['saltkey']);大约来270左右,因为我的文件被改动过来,都乱七八糟的.//Vevb.com
我们看到他就是authkey和saltkey组合而成的authkey.
新闻热点
疑难解答