本篇文章給大家分享的是有關python如何調用jsDES加密,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
小伙伴提出了幾個問題我們來一一解決吧
回顧一下背景:其實這個站每個月都會多家廠家做滲透,但也許看到密碼加密了就pass這個方式了,但是當你肯比別人付出更多的耐心,就能比別人看到更多的風景,挖到更多的漏洞。
前提:是可暴力破解的,因為如果登陸幾次就禁止此賬號登陸了作此嘗試意義不大。DES是對稱加密,開發使用前端進行加密的所以不得不寫上key到頁面或js上。有了這個key,可以進行對密碼同樣加密之后,進行暴力破解。
問題一:第一,就是那個在線加解密網站可否說下呢看了表哥的文章去找 連找幾個都不沒找到需求加密方式的加解密網站。
回答一:加密網站是:
http://tool.chacuo.net/cryptdes。然后選用的是:
其實,細心一點可以發現我上次提及加密網站的時候,數據包截圖中有個Referer字段,那里可以找到。
問題二:寫的登錄加密內容是
encryptByDES('{"username":"admin","password":"12345678"','232cb85***cd354'),解密之后的是iKUJ1等一長字符串,那這個232cb85跟解密后的有什么關系呢這個沒理解。
回答二:因為該網站已經換了一種加密方式了,可以跟你仔細講講。其實des的key,知道原文跟密文也可以暴力破解出key的。
先理清一下思路,他頁面中的加密函數是這樣子的:
<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>
而同時在頁面中定義了加密的key
也從上得知道加密的原文格式為:{"username":username”,"password":password},密碼原文根據key進行des加密
所以根據以上情報可知得出關系:
1,要加密的原文為:
{"username":"admin","password":"12345678"}
2,key為232cb851727762bbf7dd097da3bcd354
(原網站改用其他非對稱加密了,可以說下這個key,雖然也沒說是哪個網站)
3,加密方式:
加密模式ECB,填充pkcs7padding,偏移量0,輸出base64
4,密文:
iKUJ1KTtfI4NqIHAf7QQha71W4vil4uLWR1YQREFkJLsx1W/aKLcnt9Ni7PalkpP
問題三:通過burp重放數據包方式證明方法行不通 是怎么證明的。
證明方法是當你快速重復按的時候返回包是這樣的:
只是在包里unicode編碼了,不能直觀看出,但實際上解碼過后是一下這樣的。在頁面上會顯示:“請不要這么快提交,稍后再試”。
問題四:接下來保存的js順序還是有點錯誤我看截圖f12控制臺上mode-ecb.js不是在md5.js文件上么怎么保存時候其順序在md5.js文件下方了。
回答四:對的,一開始我也遇到這個問題卡在這里,實際上只要按原網站正常加載順序寫在自己的html里面就可以實現了。
原網站加載順序是這樣的:
實際上加密用到的只有兩個,mode-ecb.js和tripledes.js。
文末附上加密的JavaScript腳本,和暴力破解的腳本,和模擬的加密暴力破解源碼。
所以測試的Html里應該這么寫。(控制臺能調用成功就可以放到python腳本去進行運行。)
<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>
然后再控制臺就可以嘗試了,輸入:
encryptByDES('{"username":"admin","password":"12345678"}','232cb851727762bbf7dd097da3bcd354');
用到python腳本模塊里,只需要新建一個js文件,把兩個按順序貼到里面就可以直接調用了。見附件main_total.js。
問題五:文章中提到遇到的頁面jsdes加密方式是pkcs7padding,是怎樣確定這個頁面的加密方式的?
回答五:注意細心觀察頁面js就可以發下他加密的填充方式了。
拓展:
寫了一個簡單模擬此次加密暴力破解的練習頁面,在文末附件,可以嘗試。
登陸成功截圖。直接輸入正確密碼點擊登陸無效(因為密碼很簡單,為了要腳本解題和避免一題多解,一定要自己構造http請求才能成功。)
接替成功截圖。
最容易犯錯誤的是,貼了js文件,沒有貼頁面的js沒有貼進去。
暴力破解判斷特征就尋找返回的特點就好了。
使用python腳本暴力破解gif:
附上js加密和測試頁面和爆破腳本,請自行下載。
下載鏈接:
https://pan.baidu.com/s/1kXlGkIVd7YDkRCtov01nOw
提取碼:k8rg
main_total.js是合并的版本,test.php是模擬登陸的頁面。
以上就是python如何調用jsDES加密,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。