您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)python如何調(diào)用jsDES加密,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話(huà)不多說(shuō),跟著小編一起來(lái)看看吧。
小伙伴提出了幾個(gè)問(wèn)題我們來(lái)一一解決吧
回顧一下背景:其實(shí)這個(gè)站每個(gè)月都會(huì)多家廠家做滲透,但也許看到密碼加密了就pass這個(gè)方式了,但是當(dāng)你肯比別人付出更多的耐心,就能比別人看到更多的風(fēng)景,挖到更多的漏洞。
前提:是可暴力破解的,因?yàn)槿绻顷憥状尉徒勾速~號(hào)登陸了作此嘗試意義不大。DES是對(duì)稱(chēng)加密,開(kāi)發(fā)使用前端進(jìn)行加密的所以不得不寫(xiě)上key到頁(yè)面或js上。有了這個(gè)key,可以進(jìn)行對(duì)密碼同樣加密之后,進(jìn)行暴力破解。
問(wèn)題一:第一,就是那個(gè)在線(xiàn)加解密網(wǎng)站可否說(shuō)下呢看了表哥的文章去找 連找?guī)讉€(gè)都不沒(méi)找到需求加密方式的加解密網(wǎng)站。
回答一:加密網(wǎng)站是:
http://tool.chacuo.net/cryptdes。然后選用的是:
其實(shí),細(xì)心一點(diǎn)可以發(fā)現(xiàn)我上次提及加密網(wǎng)站的時(shí)候,數(shù)據(jù)包截圖中有個(gè)Referer字段,那里可以找到。
問(wèn)題二:寫(xiě)的登錄加密內(nèi)容是
encryptByDES('{"username":"admin","password":"12345678"','232cb85***cd354'),解密之后的是iKUJ1等一長(zhǎng)字符串,那這個(gè)232cb85跟解密后的有什么關(guān)系呢這個(gè)沒(méi)理解。
回答二:因?yàn)樵摼W(wǎng)站已經(jīng)換了一種加密方式了,可以跟你仔細(xì)講講。其實(shí)des的key,知道原文跟密文也可以暴力破解出key的。
先理清一下思路,他頁(yè)面中的加密函數(shù)是這樣子的:
<script type="text/javascript">
function encryptByDES(message, key) {
var keyHex = CryptoJS.enc.Utf8.parse(key);
var encrypted = CryptoJS.DES.encrypt(message, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.toString();
}
</script>
而同時(shí)在頁(yè)面中定義了加密的key
也從上得知道加密的原文格式為:{"username":username”,"password":password},密碼原文根據(jù)key進(jìn)行des加密
所以根據(jù)以上情報(bào)可知得出關(guān)系:
1,要加密的原文為:
{"username":"admin","password":"12345678"}
2,key為232cb851727762bbf7dd097da3bcd354
(原網(wǎng)站改用其他非對(duì)稱(chēng)加密了,可以說(shuō)下這個(gè)key,雖然也沒(méi)說(shuō)是哪個(gè)網(wǎng)站)
3,加密方式:
加密模式ECB,填充pkcs7padding,偏移量0,輸出base64
4,密文:
iKUJ1KTtfI4NqIHAf7QQha71W4vil4uLWR1YQREFkJLsx1W/aKLcnt9Ni7PalkpP
問(wèn)題三:通過(guò)burp重放數(shù)據(jù)包方式證明方法行不通 是怎么證明的。
證明方法是當(dāng)你快速重復(fù)按的時(shí)候返回包是這樣的:
只是在包里unicode編碼了,不能直觀看出,但實(shí)際上解碼過(guò)后是一下這樣的。在頁(yè)面上會(huì)顯示:“請(qǐng)不要這么快提交,稍后再試”。
問(wèn)題四:接下來(lái)保存的js順序還是有點(diǎn)錯(cuò)誤我看截圖f12控制臺(tái)上mode-ecb.js不是在md5.js文件上么怎么保存時(shí)候其順序在md5.js文件下方了。
回答四:對(duì)的,一開(kāi)始我也遇到這個(gè)問(wèn)題卡在這里,實(shí)際上只要按原網(wǎng)站正常加載順序?qū)懺谧约旱?/strong>html里面就可以實(shí)現(xiàn)了。
原網(wǎng)站加載順序是這樣的:
實(shí)際上加密用到的只有兩個(gè),mode-ecb.js和tripledes.js。
文末附上加密的JavaScript腳本,和暴力破解的腳本,和模擬的加密暴力破解源碼。
所以測(cè)試的Html里應(yīng)該這么寫(xiě)。(控制臺(tái)能調(diào)用成功就可以放到python腳本去進(jìn)行運(yùn)行。)
<script src="tripledes.js"></script>
<script src="mode-ecb.js"></script>
<script type="text/javascript">
function encryptByDES(message, key) {
var keyHex = CryptoJS.enc.Utf8.parse(key);
var encrypted = CryptoJS.DES.encrypt(message, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.toString();
}
</script>
然后再控制臺(tái)就可以嘗試了,輸入:
encryptByDES('{"username":"admin","password":"12345678"}','232cb851727762bbf7dd097da3bcd354');
用到python腳本模塊里,只需要新建一個(gè)js文件,把兩個(gè)按順序貼到里面就可以直接調(diào)用了。見(jiàn)附件main_total.js。
問(wèn)題五:文章中提到遇到的頁(yè)面jsdes加密方式是pkcs7padding,是怎樣確定這個(gè)頁(yè)面的加密方式的?
回答五:注意細(xì)心觀察頁(yè)面js就可以發(fā)下他加密的填充方式了。
拓展:
寫(xiě)了一個(gè)簡(jiǎn)單模擬此次加密暴力破解的練習(xí)頁(yè)面,在文末附件,可以嘗試。
登陸成功截圖。直接輸入正確密碼點(diǎn)擊登陸無(wú)效(因?yàn)槊艽a很簡(jiǎn)單,為了要腳本解題和避免一題多解,一定要自己構(gòu)造http請(qǐng)求才能成功。)
接替成功截圖。
最容易犯錯(cuò)誤的是,貼了js文件,沒(méi)有貼頁(yè)面的js沒(méi)有貼進(jìn)去。
暴力破解判斷特征就尋找返回的特點(diǎn)就好了。
使用python腳本暴力破解gif:
附上js加密和測(cè)試頁(yè)面和爆破腳本,請(qǐng)自行下載。
下載鏈接:
https://pan.baidu.com/s/1kXlGkIVd7YDkRCtov01nOw
提取碼:k8rg
main_total.js是合并的版本,test.php是模擬登陸的頁(yè)面。
以上就是python如何調(diào)用jsDES加密,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。