Title

每日一句

数据库内置系统表学习

一、MySQL数据库内置系统表

mysql5.7之后的版本自带数据库为

1.information_schema数据库

这个库在mysql中就是个信息数据库,它保存着mysql服务器所维护的所有其他数据库的信息,包括了数据库名,表名,字段名等。在注入中,infromation_schema库的作用无非就是可以获取到table_schema、table_name、column_name这些数据库内的信息。

所包含的主要表

tables表

存储数据库中的表信息(包括视图),包括表属于哪个数据库,表的类型、存储引擎、创建时间等信息。

查询所有的表名

columns表

存储表中的列信息,包括表有多少列、每个列的类型等

查询某个表的字段名

schemata

当前 mysql 实例中所有数据库的信息。SHOW DATABASES; 命令从这个表获取数据

查询:

获取用户名:select user();

获取权限:

获取库名:select schema_name from information_schema.schemata

获取表名:select table_name from information_schema.tables where table_schema='test';

获取字段名:selcet column_name from information_schema.columns where table_name='students'

2、mysql数据库

mysql 的核心数据库,类似于 sql server 中的 master 表,主要负责存储数据库的用户、权限设置、关键字等 mysql 自己需要使用的控制和管理信息。(常用的如在 mysql.user 表中修改 root 用户的密码)。

其中最主要的是user表,在user表中,主要的字段有user,password,host

在低版本mysql中,密码字段是password,高版本中是authentication_string

3、performance_schema数据库

PERFORMANCE_SCHEMA 主要用于收集数据库服务器性能参数,并且库里的表的存储引擎均为 PERFORMANCE_SCHEMA,用户不能创建存储引擎为 PERFORMANCE_SCHEMA 的表。

performance_schema在5.7.x及以上版本中默认启用(5.6.x及以下版本默认关闭)。如果要显式启用或关闭,我们需要使用参数performance_schema=ON|OFF设置,并在my.cnf中进行配置。

4、sys数据库

这个数据库主要是为了数据库管理人员排错使用的,主要反映数据库性能的。

因为sys系统库提供了一些代替直接访问performance_schema的视图,所

以必须启用performance_schema(将performance_schema系统参数设置为ON),sys系统库的大部分功能才能正常使用。同时要完全访问sys系统库,用户必须具有以下数据库的管理员权限。

sys_config:这是在这个系统哭上存在的唯一一个表

variable:配置选项名称

value:配置选项值

set_time:该行配置修改的时间

set_by:该行配置信息修改者,如果从被安装没有修改过,那么这个数据应该为NULL

5、MySQL文件读写

(1)读文件loadfile函数

满足条件:

  • 当前数据库用户具有 FILE 权限,使用 show grants 查看
  • secure_file_priv 不为 NULL,使用 select @@secure_file_priv 查看其值,值不为空字符串时,只能使用该目录进行文件读写操作
  • 读取文件的大小小于 max_allowed_packet,使用 select @@max_allowed_packet 查看
  • 文件及路径存在

修改secure_file_priv

打开配置文件/etc/etc/my.cnf.d/mysql-server.cnf

然后在[mysqld]中添加secure_file_priv=

然后查询;

loadfile函数

load_file() 函数只能从服务器读取文件,LOAD DATA 语句既能读取服务器的文件,也能读取客户机的文件,通过使用 LOCAL 语句从客户机读取文件内容。

(2)写文件

into outfile

mysqldump写文件

mysqldump -u 用户名 -p 密码 数据库 数据表 > 路径

二、mssql数据库内置表

1、系统默认数据库

mssql新安装后默认有四个数据库

(1)master:master 数据库记录 SQL Server 系统的所有系统级信息。 这包括实例范围的元数据(例如登录帐户)、端点、链接服务器和系统配置设置。 在 SQL Server中,系统对象不再存储在 master 数据库中,而是存储在 Resource 数据库中。 此外, master 数据库还记录了所有其他数据库的存在、数据库文件的位置以及 SQL Server的初始化信息。 因此,如果 SQL Server master 数据库不可用,则 无法启动。

(2)model 数据库用于在 SQL Server 实例上创建所有数据库的模板。 因为每次启动 时都会创建 tempdb SQL Server ,所以 model 数据库必须始终存在于 SQL Server 系统中。 model 数据库的全部内容(包括数据库选项)都会被复制到新的数据库。 启动期间,也可使用 model 数据库的某些设置创建新的 tempdb ,因此 model 数据库必须始终存在于 SQL Server 系统中。

model 的用法:当发出 CREATE DATABASE 语句时,将通过复制 model 数据库中的内容来创建数据库的第一部分, 然后用空页填充新数据库的剩余部分。如果修改 model 数据库,之后创建的所有数据库都将继承这些修改。

(3)msdb 数据库由SQL Server 代理用于计划警报和作业,以及其他功能。

(4)tempdb显式创建的临时用户对象。 它们包括全局或局部临时表及索引、临时存储过程、表变量、表值函数返回的表或游标。

tempdb 中的操作是最小日志记录操作,以便回滚事务。 每次启动 SQL Server 时都会重新创建 tempdb,从而在系统启动时总是具有一个干净的数据库副本。 在断开联接时会自动删除临时表和存储过程,并且在系统关闭后没有活动连接。tempdb 不会有什么内容从 SQL Server 的一个会话保存到另一个会话。 不允许对 tempdb 执行备份和还原操作。

Sql Server中创建数据库中默认表的作用

select @@version;查询数据库版本

select db_name();查询当前数据库

查询表名

查询字段名

select name from syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='Student');

sa:在搭建时,选择使用SQL Server身份验证会创建SA账户并设置密码,SA(System Administrator)表示系统管理员,在SQLServer2019之前的SA用户都是系统最高权限用户SYSTEM,但在2019版本时为普通数据库用户mssqlserver,是一个低权用户。

mssql的三种权限级别:

sa权限:数据库操作,文件管理,命令执行,注册表读取等价于system,SQLServer数据库的最高权限

db权限:文件管理,数据库操作等价于 users-administrators

public权限:数据库操作等价于 guest-users

select is_srvrolemember('sysadmin') ;#判断是不是管理员权限

写文件

xp_cmdshell是Sql Server中的一个组件,默认关闭,将命令字符串作为操作系统命令 shell 执行,并以文本行的形式返回所有输出。通常在拿到sa口令之后,可以通过xp_cmdshell来进行提权,

查看是否开启xp_cmdshell

select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell'

返回1说明开启

EXECUTE sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE;  
GO  
EXECUTE sp_configure 'xp_cmdshell', 1;  
GO  
RECONFIGURE;  
GO

(1)判断文件是否存在sys.xp_fileexist

0表示不存在,1表示存在

sys.xp_create_subdir 用于创建子目录,参数是子目录的路径:

exec master.sys.xp_create_subdir 'c:\User\root\hack'

(2)创建好目录后,就可以写文件;但是需开启xp_cmdshell组件

(3)一般思路为拿到权限后先创建一个表,然后把文件写入表,最后从表读取文件

三、hashcat破解哈希

1、hashcat使用

Hashcat 是一款用于破解密码的工具,据说是世界上最快最高级的密码破解工具,支持 LM 哈希、MD5、SHA 等系列的密码破解,同时也支持 Linux、Mac、Windows 平台。

常用参数

-r  使用自定义破解规则
-o  指定破解成功后的 hash 及所对应的明文密码的存放位置
-m  指定要破解的 hash 类型,如果不指定类型,则默认是 MD5
-a  指定要使用的破解模式,其值参考后面对参数。“-a 0” 字典攻击,“-a 1” 组合攻击;“-a 3” 掩码攻击
-D  指定 opencl 的设备类型
--show      显示已经破解的 hash 及该 hash 所对应的明文
--force     忽略破解过程中的警告信息,跑单条 hash 可能需要加上此选项
--remove    删除已被破解成功的 hash
--username      忽略 hash 文件中的指定的用户名,在破解 linux 系统用户密码 hash 可能会用到
--increment     启用增量破解模式,你可以利用此模式让 hashcat 在指定的密码长度范围内执行破解过程
--increment-min         密码最小长度,后面直接等于一个整数即可,配置 increment 模式一起使用
--increment-max         密码最大长度,同上
--outfile-format        指定破解结果的输出格式 id ,默认是 3
--self-test-disable 关闭启动自检

爆破模式

-a

0 | Straight    (字段破解)
1 | Combination (组合破解)
3 | Brute-force (掩码暴力破解)
6 | Hybrid Wordlist + Mask(字典+掩码破解)
7 | Hybrid Mask + Wordlist(掩码+字典破解)

字符类型

掩码举例

八位数字密码:?d?d?d?d?d?d?d?d
八位未知密码:?a?a?a?a?a?a?a?a
前四位为大写字母,后面四位为数字:?u?u?u?u?d?d?d?d
前四位为数字或者是小写字母,后四位为大写字母或者数字:?h?h?h?h?H?H?H?H
前三个字符未知,中间为admin,后三位未知:?a?a?aadmin?a?a?a
6-8位数字密码:--increment --increment-min 6 --increment-max 8 ?d?d?d?d?d?d?d?d
6-8位数字+小写字母密码:--increment --increment-min 6 --increment-max 8 ?h?h?h?h?h?h?h?h

使用示例:

mysqlhash破解

查询

将哈希保存为本地文件然后用hashcat破解


mssql哈希破解

查询

select name,password_hash from sys.sql_logins where name='sa'

然后把hash保存进行破解

mssql各版本加密形式

mssql2000

select name,password from master.dbo.sysxlogins 
Hash格式: 
0x0100(固定) + 8位key+40位HASH1 +40位HASH2
0x0100AC78A243F2E61FA800A7231C501D49CDA5B93A8A2294DC68AE487C99233F245F86A9ED5749F1838021EE1610

MSSQL 2005版本

select name,password_hash from sys.sql_logins
Hash格式:
0x0100(固定) +8位key+ 20位HASH1 + 20位HASH2 
0x01004086CEB698DB9D0295DBF84F496FDDCECADE1AE5875EB294

MSSQL 2008 R2版本

Select name,password_hash from sys.sql_logins where name = 'sa'
Hash格式:
0x0100(固定) +8位key+ 20位HASH1 + 20位HASH2 
0x0100A9A79055CACB976F1BE9405D2F7BE7B2A98003007978F821
posted @ 2022-10-12 16:41  江公  阅读(455)  评论(4编辑  收藏  举报
Title

每日一句