許久沒有水文了,閒來無事特來混混臉熟
點選登錄 —> 開啓chrome開發者工具 -> 過載框架 —> 抓到登錄包
如下:
清空之後,使用錯誤的賬號密碼登錄。一共兩個包兩張圖片。圖片開源不看,具體看包,最後在authn包中看到了我們登錄所加密過的三個參數,如下
在搜尋方塊(ctrl + shift + F )下搜尋enpassword參數,進入source File 發現link 93,name並未加密;那麼就是在它的class 屬性 J_RsaPsd中。再次找!
找到三個 J_RsaPsd,每個都上斷點,然後在點登錄一下
encrypt:加密函數,b.val加密物件(輸入的密碼)
將其扣出來!
爲什麼扣這裏?因爲這裏爲加密處!由明文轉爲密文。那我們拿到這些就以爲着拿到了加密的函數。就可以自己實現加密
c = new p.RSAKey;
c.setPublic(a.result.modulus, a.result.publicExponent);
var d = c.encrypt(b.val());
該寫如下:(js丫)
1 2 3 4 5 6 |
function getPwd(pwd) { c = new p.RSAKey; c.setPublic(a.result.modulus, a.result.publicExponent); var d = c.encrypt(b.val()); return d; } |
雖然我們加密的函數已經找到了,but,我們是在自己的環境下並不一定有這個函數(c.encrypt)。所以現在需要去找c.encrypt
新問題:p.RSAKey;沒有定義;回到chrome進入p.RSAKey-(選中點選進入f db())
進入f db()扣出這個方法,然後改寫
尋找a.result.modulus, a.result.publicExponent兩個參數,
其實是publickey包返回的結果那麼至此enpassword加密完成
補兩個環境參數
1 2 |
window = this; navigator = {}; |
link480 下斷點點選下一步,執行
執行一步, 進入RSAfingerPrint函數內,把o.page.RSAfingerPrint方法摳出來
在頁面中觀察a,b參數
觀察發現:
其實a,b,就是我們的a.result.modulus, a.result.publicExponent,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
rsaFingerprint = function () { a = "00833c4af965ff7a8409f8b5d5a83d87f2f19d7c1eb40dc59a98d2346cbb145046b2c6facc25b5cc363443f0f7ebd9524b7c1e1917bf7d849212339f6c1d3711b115ecb20f0c89fc2182a985ea28cbb4adf6a321ff7e715ba9b8d7261d1c140485df3b705247a70c28c9068caabbedbf9510dada6d13d99e57642b853a73406817"; b = "010001"; var c = $.fingerprint.details , d = $.fingerprint.result , e = c.length , f = "" , g = new m.RSAKey; console.log(a, b) 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 } } rsaFingerprint() |
繼續尋找;這兩個
1 2 |
c = $.fingerprint.details d = $.fingerprint.result |
瀏覽器裏面測一下,把他從console拿出來