JS登录加密算法破解
利用框架工具:jsEncrypter與phantomjs.exe
腳本與工具安裝就不做介紹了,網(wǎng)上都有教程
目標站點登錄請求做了password字段進行了加密,同時驗證碼存在缺陷,這時候好多初級滲透人員看到存在加密方式都會有放棄的想法,這里詳細介紹如何利用jsEncrypter分析js加密算法來進行破解加密進行還原
首先通過登錄請求進行抓包,可以看到password字段是進行完全加密的驗證碼也是完全不變的每次都為123456,且不是常規(guī)加密算法
F12調(diào)出控制臺進行下斷點分析password加密的過程
首先js它會先去調(diào)用賦值的變量
這時候在40行這里password變量會傳遞到this.digest對象實例,這里我們跟進去看下,這里可以看到他調(diào)用到CryptoJS.MD5(password).toString(CryptoJS.enc.Hex)方法中的MD5
繼續(xù)跟到CryptoJS方法里,這里可以看到主要是調(diào)用crypto-js.main.js文件,這個文件是主要進行多次加密的,我們可以不用管,跟回到login.js里,現(xiàn)在已經(jīng)知道第一層加密是通過CryptoJS.MD5(password).toString(CryptoJS.enc.Hex)進行的
第一層加密完后它會對首先會加密值+#+nonce(nonce變量是驗證碼的值),然后調(diào)用this.encrypt對象實例,跟進這個實例
this.encrypt主要調(diào)用了兩個方法,這兩個方法也是調(diào)用crypto-js.main.js文件
var key = CryptoJS.MD5(nonce).toString(CryptoJS.enc.Hex);
var pwd = CryptoJS.AES.encrypt(password, key).toString();
到這里我們就可以分析出來它的一個大概的加密方式,首先調(diào)用CryptoJS.MD5(password).toString(CryptoJS.enc.Hex)進行加密,然后把加密值傳遞給CryptoJS.MD5(nonce).toString(CryptoJS.enc.Hex)進行驗證碼的加密,加密后再進行CryptoJS.AES.encrypt(password, key).toString() password與驗證碼加密進行拼接合起來進行加密
邏輯已經(jīng)分析完畢,現(xiàn)在開始利用jsEncrypter與phantomjs.exe來編寫代碼來自動生成加密算法
第一步先把crypto-js.main.js文件copy下來,拿來進行賦值用
定義三個加密方法,進行調(diào)用輸出
引用編寫好的加密腳本,然后再調(diào)用自定義haid函數(shù)進行傳輸
大功告成,生成測試
總結(jié)
以上是生活随笔為你收集整理的JS登录加密算法破解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python学习笔记——文件
- 下一篇: gitbook使用