MySQL数据库及注入方法

a 夏天 提交于 2019-11-29 17:09:30

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

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注入漏洞详解

 

相关文章:常见的SQL语句

                  MySQL 详细学习笔记

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!