等我們登陸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.
新聞熱點
疑難解答