【JS逆向】咪咕視頻登錄RSA | 每日J(rèn)S

已遷移平臺:segmentfault,搜索 erma0
換平臺了铸题,簡書發(fā)什么都鎖定抢呆,廣告一堆,趁早倒閉吧。


第二天

JavaScript逆向練習(xí)2

0x01 目標(biāo)網(wǎng)址

http://www.miguvideo.com/

抓包或者右鍵查看框架源代碼可以看到碗暗,彈出的登錄框URL為:

https://passport.migu.cn/login?sourceid=203021&apptype=2&forceAuthn=true&isPassive=false&authType=&display=&nodeId=70027513&relayState=login&weibo=1&callbackURL=http%3A%2F%2Fwww.miguvideo.com%2Fmgs%2Fwebsite%2Fprd%2Findex.html%3FisIframe%3Dweb

0x02 定位JS

1. 隨便輸入賬號密碼驗證碼颈将,,有驗證碼要輸入正確的驗證碼言疗,點擊登錄晴圾,查看提交的參數(shù)

1.png

可以看到,發(fā)出了兩個請求噪奄,第一個是獲取key死姚,第二個是登錄,在登錄包里有加密過 的參數(shù)勤篮,密碼enpassword都毒、偽指紋fingerPrintfingerPrintDetail碰缔。

2. Ctrl+Shift+F調(diào)出搜索面板账劲,搜索enpassword,看到只要一個結(jié)果金抡,而且是網(wǎng)頁源碼瀑焦。

2.png

乍一看沒有頭緒,其實這里是通過Class來定位取值的梗肝,也就是說榛瓮,這里可以試試再搜索一次Class的值:J_RsaPsd,可以看到有兩條結(jié)果巫击,第二個是我們上一次搜索的結(jié)果榆芦,肯定不是加密點,所以應(yīng)該是在第一個結(jié)果里喘鸟。

3.png

點進(jìn)第一個結(jié)果匆绣,點花括號格式化一下,Ctrl+F搜索J_RsaPsd什黑,發(fā)現(xiàn)有三個結(jié)果崎淳,稍作分析,在每一個可疑的地方都下斷點愕把。

4.png

3. 重新輸入賬號密碼驗證碼拣凹,點擊登錄,JS被斷了下來恨豁,我們要的加密點是在328-338行的位置嚣镜,代碼扣下來備用。

success: function(a) {
   if (a.status = g.ajax.SUCCESS) {
       c.each(function() {
           var b = $(this),
               c = new j.RSAKey;
           c.setPublic(a.result.modulus, a.result.publicExponent);
           var d = c.encrypt(b.val());
           b.siblings(".J_RsaPsd").val(d)
       });
       var b = i.page.rsaFingerprint(a.result.modulus, a.result.publicExponent);
       d.filter(".J_FingerPrint").val(b.result).end().filter(".J_FingerPrintDetail").val(b.details)
   }

這段代碼就是當(dāng)異步請求Key(就是1中抓包看到的兩條請求中的第一個)成功后橘蜜,根據(jù)Key進(jìn)行加密操作菊匿。

其中b.val()是明文密碼付呕,a.result.modulus, a.result.publicExponent是第一條請求得到的Key,直接固定跌捆,i.page.rsaFingerprint是計算另外兩個加密參數(shù)徽职。

鼠標(biāo)懸停在j.RSAKey上(這里是new出來的對象,先要找到來源)佩厚,點擊彈出的內(nèi)容姆钉,直接跳轉(zhuǎn)進(jìn)去。

5.png

4. 進(jìn)入對象的定義函數(shù)中抄瓦,發(fā)現(xiàn)全是this潮瓶,那就直接把整個上一層全拿走,一直翻钙姊,找出的上層代碼是3916行開始毯辅,到4521行結(jié)束。

define("lib/rsa/rsa", [], function(a, b, c) {
    function d(a, b, c) {
        null != a && ("number" == typeof a ? this.fromNumber(a, b, c) : null == b && "string" != typeof a ? this.fromString(a, 256) : this.fromString(a, b))
    }
***
省略
***
    ab.prototype.nextBytes = _,
    db.prototype.doPublic = fb,
    db.prototype.setPublic = eb,
    db.prototype.encrypt = gb,
    c.exports = {
        RSAKey: db
    }
}),

5. 到這里已經(jīng)可以開始改寫密碼加密部分的內(nèi)容了摸恍,但是還有兩個參數(shù)也有加密悉罕,我還是一起扣出來再改寫。

同上立镶,在337行下個斷點壁袄,再運行到這里。鼠標(biāo)懸停在rsaFingerprint上媚媒,點擊彈出的內(nèi)容嗜逻,直接跳轉(zhuǎn)進(jìn)去。

6.png

直接把定義函數(shù)扣出來就可以缭召。

        rsaFingerprint: function(a, b) {
            if (!$.fingerprint)
                return {
                    details: "",
                    result: ""
                };
            var c = $.fingerprint.details
              , d = $.fingerprint.result
              , e = c.length
              , f = ""
              , g = new l.RSAKey;
            g.setPublic(a, b);
            for (var h = g.encrypt(d), i = 0; e > i; i += 117)
                f += g.encrypt(c.substr(i, 117));
            return {
                details: f,
                result: h
            }
        }

這其中參數(shù)a,b是第一條請求的Key栈顷,可以直接固定;$.fingerprint可以到console輸出看一下嵌巷,是瀏覽器萄凤、請求頭相關(guān)的信息,可以說是偽指紋搪哪,暫且固定靡努,最后return的是個對象,正好是登錄包里的另外兩個參數(shù)晓折。

0x03 改寫JS

1. 先寫一個調(diào)用函數(shù)惑朦。

var p1 = "00833c4af965ff7a8409f8b5d5a83d87f2f19d7c1eb40dc59a98d2346cbb145046b2c6facc25b5cc363443f0f7ebd9524b7c1e1917bf7d849212339f6c1d3711b115ecb20f0c89fc2182a985ea28cbb4adf6a321ff7e715ba9b8d7261d1c140485df3b705247a70c28c9068caabbedbf9510dada6d13d99e57642b853a73406817",
    p2 = "010001";//因為另一個加密也要調(diào)用這兩個值,所以定義在函數(shù)外面漓概,作為全局變量用漾月。

function getP(pass) {//密碼加密計算函數(shù),仿照加密點代碼寫的胃珍。
    var c = new RSAKey;
    c.setPublic(p1, p2);
    var d = c.encrypt(pass);
    return d;
}

2. 改寫RSAKey對象定義處

window = this;
navigator = {}; //把需要用到的值先定義空對象

//把第一行刪掉梁肿,把內(nèi)部的函數(shù)暴露出來(對應(yīng)的結(jié)尾部分的括號也刪掉)
//define("lib/rsa/rsa", [], function(a, b, c) {
    function d(a, b, c) {
        null != a && ("number" == typeof a ? this.fromNumber(a, b, c) : null == b && "string" != typeof a ? this.fromString(a, 256) : this.fromString(a, b))
    }
***
省略
***
    ab.prototype.nextBytes = _,
    db.prototype.doPublic = fb,
    db.prototype.setPublic = eb,
    db.prototype.encrypt = gb;
    //把原來的逗號換成分號結(jié)束掉語句蜓陌。

    //,
    //c.exports = {
    //    RSAKey: db
    //}
    //本來是用exports來對外導(dǎo)出,現(xiàn)在直接定義對象就可以栈雳。
    var RSAKey = db;
//}),

現(xiàn)在就可以通過getP(pass)來加密明文密碼了护奈。

3. 改寫rsaFingerprint定義

先把之前console里輸出的瀏覽器信息定義成變量缔莲,再把函數(shù)部分改成正常的定義就可以了哥纫。

把開始的if判斷給刪除,另外這里還要把對應(yīng)的值都給換一下痴奏,如*.RSAKey換成RSAKey蛀骇。

var details = '{"user_agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safa","language":"zh-CN","color_depth":"24","pixel_ratio":"1.25","hardware_concurrency":"4","resolution":"1536,864","available_resolution":"1536,824","timezone_offset":"-480","session_storage":"1","local_storage":"1","indexed_db":"1","open_database":"1","cpu_class":"unknown","navigator_platform":"Win32","do_not_track":"unknown","regular_plugins":"Chromium PDF Plugin::Portable Document Format::application/x-google-chrome-pdf~pdf,Chromium PDF View","webgl_vendor":"Google Inc.~ANGLE (Intel(R) HD Graphics 530 Direct3D9Ex vs_3_0 ps_3_0)","adblock":"true","has_lied_languages":"false","has_lied_resolution":"false","has_lied_os":"false","has_lied_browser":"false","touch_support":"0,false,false","js_fonts":"Arial,Arial Black,Arial Narrow,Book Antiqua,Bookman Old Style,Calibri,Cambria,Cambria Math,Century,C"}',
    result = "2754353484e6bed2ec7cf41dddba8bce"
rsaFingerprint = function() {
    var c = details,
        d = result,
        e = c.length,
        f = "",
        g = new RSAKey;
    g.setPublic(aaaa, "010001");
    for (var h = g.encrypt(d), i = 0; e > i; i += 117)
    f += g.encrypt(c.substr(i, 117));
    return {
        details: f,
        result: h
    }
}

此時就可以運行了。

0x04 代碼

省略

PS

如果在加密后的登陸過程中出現(xiàn)異常读拆,那可能是瀏覽器信息的問題擅憔,仔細(xì)對照看看哪里不一樣就知道了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末檐晕,一起剝皮案震驚了整個濱河市暑诸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辟灰,老刑警劉巖个榕,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異芥喇,居然都是意外死亡西采,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門继控,熙熙樓的掌柜王于貴愁眉苦臉地迎上來械馆,“玉大人,你說我怎么就攤上這事武通∨椋” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵冶忱,是天一觀的道長尾菇。 經(jīng)常有香客問我,道長朗和,這世上最難降的妖魔是什么错沽? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮眶拉,結(jié)果婚禮上千埃,老公的妹妹穿的比我還像新娘。我一直安慰自己忆植,他們只是感情好放可,可當(dāng)我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布谒臼。 她就那樣靜靜地躺著,像睡著了一般耀里。 火紅的嫁衣襯著肌膚如雪蜈缤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天冯挎,我揣著相機與錄音底哥,去河邊找鬼。 笑死房官,一個胖子當(dāng)著我的面吹牛趾徽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播翰守,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼孵奶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蜡峰?” 一聲冷哼從身側(cè)響起了袁,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎湿颅,沒想到半個月后载绿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡肖爵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年卢鹦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片劝堪。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡冀自,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出秒啦,到底是詐尸還是另有隱情熬粗,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布余境,位于F島的核電站驻呐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏芳来。R本人自食惡果不足惜含末,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望即舌。 院中可真熱鬧佣盒,春花似錦、人聲如沸顽聂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蜜葱,卻和暖如春全景,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背牵囤。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工爸黄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人奔浅。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓馆纳,卻偏偏與公主長得像诗良,于是被迫代替她去往敵國和親汹桦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,104評論 1 32
  • 一鉴裹、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 5,746評論 0 10
  • ¥開啟¥ 【iAPP實現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程舞骆,因...
    小菜c閱讀 6,426評論 0 17
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時,會觸發(fā)此異常径荔。 O...
    我想起個好名字閱讀 5,320評論 0 9
  • 我 一個射手座的女漢子 督禽,一個努力減肥的女胖子,一個整天嘰嘰喳喳說個不停的女孩子总处,一個整天天嘻嘻哈哈鬧個不停的女...
    做個小鳥依人的女胖子閱讀 381評論 0 0