国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > Discuz > 正文

關(guān)于discuz ucenter 在解密的時(shí)候 ,用uc_authcode或_authcode解不開

2024-09-11 09:03:23
字體:
供稿:網(wǎng)友

關(guān)于discuz ucenter 在解密的時(shí)候,用uc_authcode或_authcode解不開密碼.

吐槽:針對(duì)于discuz和ucenter這個(gè)東西,個(gè)人感覺太復(fù)雜,也太垃圾,現(xiàn)在好多網(wǎng)上去搜索的時(shí)候基本都是單點(diǎn)登陸,但是這個(gè)單點(diǎn)登陸局限性太大,所以我們要做雙向登陸就會(huì)出現(xiàn)一些問題,下面說一下為何解不開密碼.

問題1:為何找不到Example_auth這個(gè)cookie名稱.

答:每個(gè)應(yīng)用discuz ucenter的時(shí)候,都會(huì)生成_auth,而前面的Example的意思是說明,除非你自己定義cookie名稱叫Example_auth,而當(dāng)我們?nèi)ポ敵鯿ookie的時(shí)候,會(huì)找到這樣的名稱:****_auth,這里的星號(hào)代表是生成的信息,所以不用去管他,直接將****_auth對(duì)應(yīng)的字符進(jìn)行解密即可.

問題2:按照問題1中的所說還是解不開密碼,返回是空的.

答:這是因?yàn)槊罔€不對(duì)應(yīng)導(dǎo)致的,這里說明一下,我們?cè)诟夸泟?chuàng)建的config.inc.php里面有個(gè)全局變量UC_KEY這是個(gè)秘鑰,但是當(dāng)我們?nèi)ゾW(wǎng)站根目錄的bbs/config文件夾下面找到配置文件config_ucenter.php中海油一個(gè)UC_KEY,但是我們發(fā)現(xiàn),都是UC_KEY但是實(shí)際值卻不一樣,根據(jù)他的命名 ,UC_KEY可以很明顯的看出是ucenter的秘鑰,但是卻一樣啊。所以說,discuz和ucenter很垃圾啊。

都吧我給搞暈了,這里先不管他,到底是什么key,暫時(shí)我們不動(dòng)他就可以,然后我們找到根目錄下的api/uc.php中的synlogin這個(gè)方法,然后我們可以看到這句話dsetcookie('auth', authcode("$member[password]/t$member[uid]", 'ENCODE'), $cookietime);這里我就不說是多少行了,代碼都被我給弄亂了。我們追蹤authcode這個(gè)方法,發(fā)現(xiàn)這個(gè)方法在根目錄下的bbs/source/function/function_core.php這個(gè)文件里面。因?yàn)閍uthcode這個(gè)字符串實(shí)際就是加密的cookie信息。

然后我們找到authcode這個(gè)方法,可以看到$key = md5($key != '' ? $key : getglobal('authkey'));實(shí)際上如果你仔細(xì)的話,可以看到authcode這個(gè)方法在調(diào)用的時(shí)候根本就沒有變量,所以,這里的key是空的,所以使用了getglobal這個(gè)東西,但是這個(gè)getglobal返回過來的根本不是誰的key(UC和discuz的key都不是這個(gè)),呢我們就不管他,你可以使用bug測(cè)試,看看這個(gè)key到底是哪個(gè)秘鑰,實(shí)際上就是這里出的問題,但是為了保證其不修改人家代碼的原則,我們自己修改自己的代碼即可。直接在uc.php中的synlogin()方法中添加即可,如下:

if(($member = getuserbyuid($uid, 1))) {

$key = "111111111111111111";//自己定義key,然后在解密的時(shí)候直接用這個(gè)key就可以了.

dsetcookie('auth', authcode("$member[password]/t$member[uid]", 'ENCODE',  $key) , $cookietime );}

我們?cè)谖覀冏约旱捻撁娅@取cookie,代碼如下:

  1. Yii::import('application.vendor.*'); 
  2.   include_once 'ucenter.php'
  3.   $model = new LoginForm; 
  4.   $key = "111111111111111111";//使用上面自己定義的key就可以了 
  5.  $mm = uc_authcode($_COOKIE['b7R7_2132_auth'], 'DECODE',$key); //Vevb.com 
  6. print_r($mm); 

至于這里為何有包含的文件,這里我就不說了,在我的博客中有詳細(xì)介紹yii與discuz雙向登陸、注冊(cè)、退出代碼實(shí)例。然后我們這里用的uc_authcode方法,在根目錄uc_client/client.php文件中。我們可以看出和authcode的代碼基本一樣,上面我們說過時(shí)UC_KEY不一致導(dǎo)致的,這里$key = md5($key ? $key : UC_KEY);可以看到還是有UC_KEY,然后我們?nèi)グ蛇@句話替換成如下:

md5("這里是UC_kEY");如果你不知道是哪個(gè)KEY,你就自己試試,反正就2個(gè)UC_KEY,然后得到的結(jié)果就是分2段.

前面是用戶密碼,后面是用戶id這里沒有用戶名,我們可以根據(jù)用戶id獲取對(duì)應(yīng)的用戶名即可。然后我們呢就可以隨意操作了。

tips:博客中有關(guān)于yii與discuz互通的信息,以及yii與discuz之間通信的步驟代碼都會(huì)詳細(xì)記錄,不懂的可以發(fā)消息給我,經(jīng)過本人1周多的時(shí)間研究把這部分給弄出來了,在此,感謝我的文件mmm.txt呵呵,在測(cè)試代碼追蹤中,mmm.txt記錄了我的追蹤過程,mmm.txt經(jīng)過刪除,新生成不下上百遍。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 佛教| 太仓市| 康乐县| 兴安县| 正蓝旗| 三都| 舞钢市| 玉溪市| 汉川市| 夏河县| 龙南县| 中江县| 八宿县| 独山县| 东源县| 平阳县| 长岭县| 左权县| 华蓥市| 卢湾区| 金秀| 贵港市| 彩票| 呼伦贝尔市| 六安市| 禹州市| 勐海县| 闽清县| 扶沟县| 永春县| 黑龙江省| 南昌县| 龙泉市| 柳林县| 拉萨市| 昌黎县| 延边| 承德市| 淮滨县| 法库县| 普格县|