5.6版本自带的库为:information_schema、mysql、performance_schema、test
5.7版本自带的库为:information_schema、mysql、performance_schema、sys
以5.6版本为例,查看数据库内置系统表:
5.7版本内置系统表:
information_schema
Information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式。
元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。
在MySQL中,把 information_schema 看作是一个数据库,确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件
简单来说,这个库在mysql中就是个信息数据库,它保存着mysql服务器所维护的所有其他数据库的信息,包括了数据库名,表名,字段名等。在注入中,infromation_schema
库的作用无非就是可以获取到table_schema、table_name、column_name
这些数据库内的信息。
-
TABLES:提供了关于数据库中的表的信息(包括视图),详细表述了某个表属于哪个 schema、表类型、表引擎、创建时间等信息,
show tables from schemaname
的结果取之此表。 -
COLUMNS:提供了表中的列信息,详细表述了某张表的所有列以及每个列的信息,
show columns from schemaname.tablename
的结果取之此表。 -
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:描述了具有约束的键列。
-
ROUTINES:提供了关于存储子程序(存储程序和函数)的信息,此时,ROUTINES 表不包含自定义函数(UDF),名为“mysql.proc name”的列指明了对应于 INFORMATION_SCHEMA.ROUTINES 表的mysql.proc表列。
-
VIEWS:给出了关于数据库中的视图的信息,需要有 show views 权限,否则无法查看视图信息。
-
TRIGGERS:提供了关于触发程序的信息,必须有super权限才能查看该表。
mysql
mysql 的核心数据库,类似于 sql server 中的 master 表,主要负责存储数据库的用户、权限设置、关键字等 mysql 自己需要使用的控制和管理信息。(常用的如在 mysql.user 表中修改 root 用户的密码)。
performance_schema
PERFORMANCE_SCHEMA 主要用于收集数据库服务器性能参数,并且库里的表的存储引擎均为 PERFORMANCE_SCHEMA,用户不能创建存储引擎为 PERFORMANCE_SCHEMA 的表。
performance_schema在5.7.x及以上版本中默认启用(5.6.x及以下版本默认关闭)。如果要显式启用或关闭,我们需要使用参数performance_schema=ON|OFF设置,并在my.cnf中进行配置。
这里的数据表分为几类:
-
setup table:设置表,配置监控选项。
setup_consumers:描述各种事件。
setup_instruments:描述这个数据库下的表名以及是否开启监控。
setup_timers :描述监控选项已经采样频率的时间间隔。
-
current events table:记录当前那些thread 正在发生什么事情。
-
history table:发生的各种事件的历史记录表。
-
summary table:对各种事件的统计表。
-
其他表。
sys
sys_config:这是在这个系统库上存在的唯一一个表。
sys数据库表说明:
CREATE TABLE `sys_config` (
`variable` varchar(128) NOT NULL,
`value` varchar(128) DEFAULT NULL,
`set_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`set_by` varchar(128) DEFAULT NULL,
PRIMARY KEY (`variable`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
-
variable:配置选项名称
-
value:配置选项值
-
set_time:该行配置修改的时间
-
set_by:该行配置信息修改者,如果从被安装没有修改过,那么这个数据应该为NULL
以上值的会话变量为@sys.+表中variable字段,如
@sys.statement_truncate_len
临时改变值,在会话中会一直使用这个值:
set @sys.statement_truncate_len = 32;
如果想要恢复使用表的默认值,只需要将这个会话值设置为null:
set @sys.statement_truncate_len = null;
diagnostics.allow_i_s_tables
默认为OFF ,如果开启表示允许diagnostics() 存储过程执行扫描information_schema.tables 表,如果表很多,那么可能会很耗性能。
diagnostics.include_raw
默认为OFF,开启将会从metrics 视图输出未加工处理的数据。
statement_performance_analyzer.limit
视图在没有加limit限制时,返回的最大行数。
statement_truncate_len
通过format_statement()函数返回值的最大长度。
debug
这个表非默认选项还有一个@sys.debug参数,可以手动加入:
INSERT INTO sys_config (variable, value) VALUES('debug', 'ON');
UPDATE sys_config SET value = 'OFF' WHERE variable = 'debug';
SET @sys.debug = NULL;
关于此表有两个触发器:
sys_config_insert_set_user触发器
如果加入新行通过insert语句,那么这个触发器会把set_by列设置为当前操作者。
sys_config_update_set_user触发器
如果加入新行通过update语句,那么这个触发器会把set_by列设置为当前操作者。
test
这是安装时创建的一个测试数据库,是一个空数据库,没有任何表,可以删除。
查询用户的hash
MySQL中hash的加密方式共分为两种。MySQL4.1之前的版本中,所用的加密方式为MySQL 323,加密出来的hash是16位的。MySQL4.1包括之后的版本中,所用的加密方式为MySQL SHA1,加密出来的hash是40位的。
1.登录mysql
/usr/local/mysql/bin/mysql -uroot -p
2.查询数据库
show databases;
3.找到mysql库并进入该库
use mysql;
4.查询数据表
show tables from mysql;
5.找到user表并查询表中字段
select * from user;
6.查询user、password字段信息
select user,password from user;
得到user:root,password:*81F5E…
7.查询hash值
hashcat 使用教程
上面获得用户hash值使用的是一个在线网站,也可以使用kali自带的hashcat进行破解。hashcat是一款自称为世界上最快的密码破解工具。
hashcat 常用命令
hashcat 破解模式
hashcat 集成字符集
hash id 对照表
不知道为什么失败了,应该是个人操作问题,在这里就不予深究了。