本教程僅限于學(xué)術(shù)探討,也沒(méi)有專(zhuān)門(mén)針對(duì)某個(gè)網(wǎng)站而編寫(xiě),禁止用于非法用途、商業(yè)活動(dòng)、惡意濫用技術(shù)等,否則后果自負(fù)。觀看則同意此約定。如有侵權(quán),請(qǐng)告知?jiǎng)h除,謝謝!
目錄
前言
一、先分析下接口參數(shù)
二、開(kāi)導(dǎo)mtgsig
1.找加密入口
2.扣算法
3.驗(yàn)證算法
前言
最近了工作也不是很忙了,也不知道搞哈網(wǎng)站,今天就來(lái)搞搞大眾點(diǎn)評(píng)的mtgsig網(wǎng)站如下??
aHR0cHM6Ly9tLmRpYW5waW5nLmNvbS9zaG9wbGlzdC8xL3NlYXJjaD9mcm9tPW1fc2VhcmNoJmtleXdvcmQ9JUU5JUJCJTkxJUU2JTlBJTk3JUU2JTk2JTk5JUU3JTkwJTg2
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
一、先分析下接口參數(shù)
1.先來(lái)看下加密的isoapi/module路由接口,其中的mtgsig就是加密的字段了,a1、a2明文其它未知,d1長(zhǎng)得挺像md5的
?2.然后提交的表單呢也有個(gè)_token的加密字段,怎么說(shuō)呢,總體看著有點(diǎn)像base64的編碼,好了,接下來(lái)就可以開(kāi)始我們的逆向分析了
二、開(kāi)導(dǎo)mtgsig
1.找加密入口
先看下堆棧,搞過(guò)來(lái)網(wǎng)站有了一點(diǎn)的經(jīng)驗(yàn)一般入口都是在anonymous中,多看幾個(gè)就知道是哪里了,第一個(gè)anonymous是混淆的直接就生成了mtgsig,其它的呢看著也不太像先看下tryCatch
進(jìn)來(lái)呢就是異步操作,進(jìn)入看下它執(zhí)行的異步函數(shù)內(nèi)部是什么鬼玩意
?
?先大概大膽的猜測(cè)一下這個(gè)switch干了什么鬼操作,case 24 這個(gè)跳轉(zhuǎn)應(yīng)該就是變量的初始化定義了,case 13 就是堆加密的內(nèi)容賦值了,其它跳轉(zhuǎn)肯定就是加密入口或者是其它七七八八的小操作
?
?通過(guò)漫長(zhǎng)的單步跟,來(lái)到case 47處,這里可以看見(jiàn)它將一些請(qǐng)求頭、參數(shù)、請(qǐng)求方法等初始化好了,傳入了一個(gè)叫 h2 的函數(shù)中,這個(gè)函數(shù)想必就是加密入口了,ojbk進(jìn)入看看
進(jìn)來(lái)又是異步操作,跟我擱這套娃呢???,大致看下它干了啥,看著一個(gè)像是get與post的判斷,又或者是版本的判斷,這玩意不管,扣加密就對(duì)了,調(diào)用gW可以看到mtgsig加密結(jié)果出來(lái)了,肝它
?
2.扣算法
大概的解讀一下hr ? g4 : g5之前的操作干了什么,已知 hq、hr明文,hI是URL的路由參數(shù)并進(jìn)行了b(1143)·sort·自定義排序函數(shù),全扣也好還原也罷,這么快怎么來(lái)吧這里沒(méi)啥難度
?然后看下g4了,這個(gè)g4呢其實(shí)也不難,它目前好像還不校驗(yàn)這個(gè)參數(shù),全局查找一下g4,欸可疑的地方不就來(lái)了嗎,斷點(diǎn)上看看什么鬼玩意
?步入看下,好像把一些瀏覽器環(huán)境啥的給加密了,cw就是編碼轉(zhuǎn)換沒(méi)啥東西,主要還是看看dd干啥了
?一進(jìn)去就看見(jiàn)欸,AES?那沒(méi)事了,經(jīng)過(guò)后期的測(cè)試也發(fā)現(xiàn)這個(gè)值應(yīng)該沒(méi)有檢測(cè)那就用AES模仿一下就好了,跳過(guò)它
'h1.3' + CryptoJS.AES.encrypt(timer.toString(), CryptoJS.enc.Utf8.parse('z7Jut6Ywr2Pe5Nhx'), {
'iv': CryptoJS.enc.Utf8.parse('0807060504030201'),
'mode': CryptoJS.mode.CBC,
'padding': CryptoJS.pad.Pkcs7
}).toString(CryptoJS.enc.Base)
好了惡心的東西它來(lái)了,switch循環(huán)語(yǔ)句,仿佛看見(jiàn)太奶在向我招手,四五百行代碼,不過(guò)淡定不慌量大而已小問(wèn)題??,到這里某些人可能就不會(huì)扣了,當(dāng)然你也可以補(bǔ)環(huán)境,這里就不展示補(bǔ)環(huán)境的操作了,單扣算法,還原呢?你都單扣出來(lái)了還原python算法還難嗎?
?如果經(jīng)驗(yàn)不足可能就有些棘手,不過(guò)問(wèn)題不大,慢慢來(lái)總會(huì)有導(dǎo)出來(lái)的一天,這里呢就不展示怎么扣了,大概說(shuō)下重點(diǎn),就自己慢慢單扣了,這循環(huán)中主要是在于其中的兩個(gè)call,這兩個(gè)是重中之重,斷上點(diǎn)多調(diào)試幾次你就找到其中奧妙了
?像這些push了函數(shù)入?yún)⒌哪憔鸵⒁饬?,這些都是加密要用的轉(zhuǎn)碼操作,可千萬(wàn)不要遺漏掉了,不然加密可就對(duì)不上了
?
?像這些帶有運(yùn)算的也記得插上裝,免得遺漏了算法運(yùn)算的內(nèi)容,小提示:d1的后半部分就靠這些運(yùn)算得出的,最好都打上日志
?最后呢,你的每一步運(yùn)算結(jié)果都必須對(duì)得上scope中的參數(shù)值,不然有些小伙伴就找不到北了,喲呵為什么我加密不能用??
3.驗(yàn)證算法
阿巴阿巴,莫名其妙的就扣完了,欸呀呀完事
?最后驗(yàn)證一下結(jié)果能不能用吧,OJBK,結(jié)果當(dāng)然是能用的啦
總結(jié)
好了到此文章就結(jié)束了,還有一件事,d1后半部分是運(yùn)算過(guò)的注意了,?WEBDFPID的生成很簡(jiǎn)單,至于_token嘛,置空都可以暫時(shí)沒(méi)用上就沒(méi)寫(xiě)上面了,WEBDFPID的話呢也是隨機(jī)數(shù)所以啊,固定就行了,反正后端應(yīng)該沒(méi)有檢測(cè)置空都可以,也有可能是蜜罐讓你進(jìn)去在封IP至于屬于哪一種自己測(cè)試咯,拜拜~文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-477071.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-477071.html
到了這里,關(guān)于JS逆向之大眾點(diǎn)評(píng)mtgsig的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!