1. 程式人生 > >Python編寫暴力破解模組,破解驗證碼!

Python編寫暴力破解模組,破解驗證碼!

兩種方式,Python編寫暴力破解模組、演算法破解驗證碼,視訊教材!

驗證碼識別&暴力破解

1. 前言

作為一名努力工作的滲透實習生,這段時間在處理滲透工作的時候發現,弱口令是進入網站最簡單、最有效、危害重大的漏洞之一,但常常暴力破解使用者名稱時會發現存在討厭的驗證碼,讓我們從而無法進行滲透工作。所以,這倆天寫了幾行程式碼可以簡單的識別驗證碼並進行暴力破解,算是個人總結吧,大牛們繞過就好。

2. 準備工作

在滲透測試中我們需要收集一些有用的資訊,比如網站存在的使用者名稱,如圖2.1所示,在找回密碼處可以遍歷使用者名稱,使用Burp抓包從返回包中可以看到使用者名稱是否存在。但同時也可以看到有驗證碼的存在,我們無法進行暴力破解,所以我們需要識別驗證碼並加入字典進行暴力破解

兩種方式,Python編寫暴力破解模組、演算法破解驗證碼,視訊教材!

圖2.1

3. Python程式

3.1 整體思路

3.1.1 訪問該網站頁面,爬取頁面存在的驗證碼資訊和跳轉的地址(點選下一步訪問的地址)。

3.1.2 識別驗證碼,加入驗證碼和使用者名稱字字典請求訪問。

3.1.3 從放回包中判斷是否暴力破解成功,打印出存在的使用者名稱。

3.2 python識別驗證碼

將驗證碼下載到本地,命名為code.jpg

兩種方式,Python編寫暴力破解模組、演算法破解驗證碼,視訊教材!

from PIL import Image

import pytesseract

python中使用Image,pytesseract識別存在的驗證碼

兩種方式,Python編寫暴力破解模組、演算法破解驗證碼,視訊教材!

成功識別出存在的驗證碼 7KKV

3.3 爬取驗證碼資訊和跳轉地址

3.3.1 訪問該網址連結,使用firebug檢視頁面原始碼發現存在的驗證碼地址和跳轉的地址,我們需要載入使用者名稱字典和識別出來的驗證碼進行訪問。

兩種方式,Python編寫暴力破解模組、演算法破解驗證碼,視訊教材!

兩種方式,Python編寫暴力破解模組、演算法破解驗證碼,視訊教材!

3.3.2 Python識別驗證碼和下一次請求的地址

使用requests模組進行第一次訪問,通過檢視原始碼,進行正則匹配得到驗證碼地址和跳轉的地址,將驗證碼儲存到本地,識別驗證碼並返回

兩種方式,Python編寫暴力破解模組、演算法破解驗證碼,視訊教材!

3.3.3 載入使用者名稱字典,進行暴力破解

定義使用者字典函式,返回users列表

兩種方式,Python編寫暴力破解模組、演算法破解驗證碼,視訊教材!

抓包分析資料包,為post請求

兩種方式,Python編寫暴力破解模組、演算法破解驗證碼,視訊教材!

通返回包中,如果使用者名稱錯誤或驗證碼錯誤,會出現titleNoteError欄位,如果正確則沒有該欄位。

兩種方式,Python編寫暴力破解模組、演算法破解驗證碼,視訊教材!

編寫暴力破解模組

兩種方式,Python編寫暴力破解模組、演算法破解驗證碼,視訊教材!

加入多執行緒,優化破解速度

兩種方式,Python編寫暴力破解模組、演算法破解驗證碼,視訊教材!

完整程式碼

兩種方式,Python編寫暴力破解模組、演算法破解驗證碼,視訊教材!

存在的使用者名稱

兩種方式,Python編寫暴力破解模組、演算法破解驗證碼,視訊教材!