zoukankan      html  css  js  c++  java
  • MySQL数据库及注入方法

    目录

    MySQL数据库

    mysql中比较常用的一些函数:

    判断MySQL数据库是否存在SQL注入

    MySQL数据库文件结构

    MySQL数据库密码破解

    MySQL UDF提权


    MySQL数据库

    MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言——结构化查询语言(SQL)进行数据库管理。

    mysql中的注释符:#   、 /**/   、  -- 

    MySQL数据库的特有的表是:information_schema.tables

    information_schema.tables 存储了数据表的元数据信息,下面对常用的字段进行介绍:

    • table_schema: 记录数据库名
    • table_name: 记录数据表名
    • table_rows: 关于表的粗略行估计
    • data_length : 记录表的大小(单位字节)

    在MySQL5.0之后,MySQL中默认添加了一个名为 information_schema 的数据库,该数据库中的表都是只读的,不能进行更新、删除和插入等操作,也不能加载触发器,因为它们实际只是一个视图,不是基本表,没有关联的文件。

    当尝试删除该 information_schema 数据库时,会爆出以下的错误!

    information_schema 数据库中三个很重要的表:

    • information_schema.schemata:  该数据表存储了mysql数据库中的所有数据库的库名
    • information_schema.tables:     该数据表存储了mysql数据库中的所有数据表的表名
    • information_schema.columns:    该数据表存储了mysql数据库中的所有列的列名

    关于这几个表的一些语法:

    // 通过这条语句可以得到所有的数据库名  
    select schema_name from information_schema.schemata limit 0,1
     
    // 通过这条语句可以得到所有的数据表名
    select table_name from information_schema.tables limit 0,1
    // 通过这条语句可以得到指定security数据库中的所有表名
    select table_name from information_schema.tables where table_schema='security'limit 0,1
     
    // 通过这条语句可以得到所有的列名
    select column_name from information_schema.columns limit 0,1
    // 通过这条语句可以得到指定数据库security中的数据表users的所有列名
    select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1
     
    //通过这条语句可以得到指定数据表users中指定列password的数据(只能是database()所在的数据库内的数据,因为处于当前数据库下的话不能查询其他数据库内的数据)
    select password from users limit 0,1

    查看当前用户的权限

    select * from mysql.user where user = substring_index(user(), '@', 1) ;

     

    mysql中比较常用的一些函数:

    • version(): 查询数据库的版本          
    • user():查询数据库的使用者       
    • database():数据库
    • system_user():系统用户名
    • session_user():连接数据库的用户名
    • current_user:当前用户名
    • load_file():读取本地文件
    • @@datadir:读取数据库路径
    • @@basedir:mysql安装路径
    • @@version_complie_os:查看操作系统

    ascii(str) : 返回给定字符的ascii值,如果str是空字符串,返回0;如果str是NULL,返回NULL。如 ascii("a")=97

    length(str) : 返回给定字符串的长度,如  length("string")=6

    substr(string,start,length) : 对于给定字符串string,从start位开始截取,截取length长度 ,如  substr("chinese",3,2)="in"

    substr()、stbstring()、mid()  三个函数的用法、功能均一致

    concat(username):将查询到的username连在一起,默认用逗号分隔

    concat(str1,'*',str2):将字符串str1和str2的数据查询到一起,中间用*连接

    group_concat(username) :将username数据查询在一起,用逗号连接

    limit 0,1:查询第1个数        limit  1,1: 查询第2个数             limit  n,1: 查询第n+1个数

     判断MySQL数据库是否存在SQL注入

    传送门——>  SQL注入漏洞详解

    MySQL数据库文件结构

    MYSQL数据库文件类型

    MySQL数据库文件共有 frm 、MYD 和 MYI 三种文件,.frm 是描述表结构的文件,.MYD 是表的数据文件,.MYI 是表数据文件中任何索引的数据树。一般是单独存在一个文件夹中,默认是在路径“C:Program FilesMySQLMySQL Server 5.7data”下。在MySQL数据库中所有设置默认都保存在“C:Program FilesMYSQLMYSQL Server 5.7datamysql”中,也就是安装程序的data目录下,有关用户一共有三个文件即user.frm、user.MYD和user.MYI,MYSQL数据库用户密码都保存在user.MYD文件中,包括root用户和其他用户的密码。

    user.MYD文件

    MySQL数据库密码破解

    MySQL数据库用户密码跟其它数据库用户密码一样,在应用系统代码中都是以明文出现的,在获取文件读取权限后即可直接从数据库连接文件中读取,例如 asp 代码中的conn.asp数据库连接文件,在该文件中一般都包含有数据库类型,物理位置,用户名和密码等信息;而在MySQL中即使获取了某一个用户的数据库用户(root用户除外)的密码,也仅仅只能操作某一个用户的数据库中的数据。

    在实际攻防过程中,在获取Webshell的情况下,是可以直接下载MySQL数据库中保留用户的user.MYD文件,该文件中保存的是MySQL数据库中所有用户对应的数据库密码,只要能够破解这些密码那么就可以正大光明的操作这些数据,虽然网上有很多修改MySQL数据库用户密码的方法,却不可取,因为修改用户密码的事情很容易被人发现!

    MySQL用户密码加密方式

    MySQL数据库的认证密码有两种方式,MySQL 4.1版本之前是MySQL323加密,MySQL 4.1及其之后的版本都是MySQL SHA1加密。因为如今绝大部分网站都是用的4.1之后的版本,所以我们接下来只讨论使用MySQL SHA1加密方式的密码。MySQL中的 password(str) 函数就是对其进行加密的。该函数会生成41位的字符串,但是 * 是不计入到密码中的,所以真正有效位数是后面的40位。

    当MySQL<8.0时,是用 password() 函数对密码加密。当MySQL>8.0时,MySQL取消了 password() 函数。

    在MySQL中,用户密码存放在 mysql 数据库的 user 表里

    • 当MySQL<5.7,密码字段在mysql数据库的user表的password字段里
    • 当MySQL>=5.7,密码字段在mysql数据库的user表的authentication_string字段里

    当MySQL< 5.7时:

    当MySQL>= 5.7时:

    破解MySQL用户密码

    例如破解root用户的密码:81F5E21E35407D884A6CD4A731AEBFB6AF209E1B

    在线破解网站:https://cmd5.com/   、  https://www.somd5.com/

    MySQL UDF提权

    相关文章:常见的SQL语句

                      MySQL 详细学习笔记

  • 相关阅读:
    VSCode C++ 主题
    Linux 软连接应用
    Python 调用 C 动态库
    Qt 打包程序
    Qt 样式修改
    libusb 批传输的使用方法
    Qt 数据库操作
    Qt 调用第三方库
    CS 调用 C 动态库
    Qt 串口操作
  • 原文地址:https://www.cnblogs.com/csnd/p/11807625.html
Copyright © 2011-2022 走看看