0x01 開發背景
說起對存在驗證碼的登錄表單進行爆破,大部分人都會想到PKav HTTP Fuzzer
,這款工具在前些年確實給我們帶來了不少便利。反觀burp一直沒有一個高度自定義通殺大部分圖片驗證碼的識別方案,於是抽了點閑暇的時間開發了captcha-kille,希望burp也能用上各種好用的識別碼技術。其設計理念是只專注做好對各種驗證碼識別技術接口的調用!
說具體點就是burp通過同一個插件,就可以適配各種驗證碼識別接口,無需重復編寫調用代碼。今天不談編碼層面如何設計,感興趣的可以去github看源碼。此處只通過使用步驟來說明設計的細節。
0x02 Step1:將獲取驗證碼的數據包發送到插件
使用burp抓取獲取驗證碼數據包,然后右鍵captcha-killer
-> send to captcha panel
發送數據包到插件的驗證碼請求面板。
然后到切換到插件面板,點擊獲取即可拿到要識別的驗證碼圖片內容。
注意:獲取驗證碼的cookie一定要和intruder發送的cookie相同!
0x03 Step2:配置識別接口的地址和請求包
拿到驗證碼之后,就要設置接口來進行識別了。我們可以使用網上尋找免費的接口,用burp抓包,然后右鍵發送到插件的接口請求面板。
然后我們把圖片內容的位置用標簽來代替。比如該例子使用的接口是post提交image參數,參數的值為圖片二進制數據的base64編碼后的url編碼。那么Request template
(請求模版)面板應該填寫如下:
ID | 標簽 | 描述 |
---|---|---|
1 | <@IMG_RAW></@IMG_RAW> |
代表驗證碼圖片原二進制內容 |
2 | <@URLENCODE></@URLENCODE> |
對標簽內的內容進行url編碼 |
3 | <@BASE64></@BASE64> |
對標簽內的內容進行base64編碼 |
最后點擊“識別”即可獲取到接口返回的數據包,同時在request raw
可以看到調用接口最終發送的請求包。
0x03 Step3:設置用於匹配識別結果的規則
通過上一步我們獲取到了識別接口的返回結果,但是插件並不知道返回結果中,哪里是真正的識別結果。插件提供了4中方式進行匹配,可以根據具體情況選擇合適的。
ID | 規則類型 | 描述 |
---|---|---|
1 | Repose data | 這種規則用於匹配接口返回包內容直接是識別結果 |
2 | Regular expression | 正則表達式,適合比較復雜的匹配。比如接口返回包{"coede":1,"result":"abcd"} 說明abcd是識別結果,我們可以編寫規則為result":"(.*?)"\} |
3 | Define the start and end positions | 定義開始和結束位置,使用上面的例子,可以編寫規則{"start":21,"end":25} |
4 | Defines the start and end strings | 定義開始和結束字符,使用上面的例子,可以編寫規則為{"start":"result\":\","end":"\"\}"} |
通過分析我們知道,接口返回的json數據中,字段words
的值為識別結果。我們這里使用Regular expression
(正則表達式)來匹配,然后選擇yzep
右鍵標記為識別結果
,系統會自動生成正則表達式規則" (.*?)"\}\]
。
注意:若右鍵標記自動生成的規則匹配不精確,可以人工進行微調。比如該例子中可以微調規則為"words"\: "(.*?)"\}
將更加准確!
到達這步建議將配置好常用接口的url,數據包已經匹配規則保存為模版,方便下次直接通過右鍵模板庫
中快速設置。同時插件也有默認的模版供大家使用與修改。
0x04 Step4:在Intruder模塊調用
配置好各項后,可以點擊鎖定
對當前配置進行鎖定,防止被修改導致爆破失敗!接着安裝以下步驟進行配置
0x05 使用小案例
后續將通過小案例來演示,如何通過captcha-killer讓burp使用上各種技術識別驗證碼(免費方案),敬請期待!
- 《captcha-killer調用tesseract-ocr識別驗證碼》[待發布]
- 《captcha-killer調用完美識別驗證碼系統》[待發布]
- 《captcha-killer調用百度ocr識別驗證碼》[待發布]
- 《capatch-killer+機器學習識別驗證碼》[待發布]