信息之路(第三周作业)-数据库系统表相关学习

一、 如何利用数据库的功能读写文件,需要什么样的条件才可以读写
我一直以为数据库只能读写数据呢,原来还可以读写文件。那接下来就看看mysql数据库、Oracle数据库等比较常用的数据库是如何读写文件的吧。
mysql如何读写文件
1、 load_file()或load data infile
原理:
新建一个表,将文件内容以字符串形式插入表中,然后读出表中数据。
需要的条件:
① 拥有file权限
② secure_file_priv不为NULL
以前复现过mysql的UDF漏洞,就是先将文件内容以字符串形式插入,然后再读出数据的。
在MySQL5.7中,secure_file_priv的值为某个文件夹:
信息之路(第三周作业)-数据库系统表相关学习_第1张图片
2、 5.x的版本中,可以使用system cat命令读取文件
需要的条件:
① 拥有文件权限
② 本地读取
参考文章:
https://www.cnblogs.com/c1e4r/articles/8618692.html
https://blog.csdn.net/caiqiiqi/article/details/84673007
Oracle如何读写文件
1、 使用提供的create directory功能
先创建目录,再将读写权限授予特定用户
参考文章:
https://blog.csdn.net/fax5201314/article/details/6688598
https://www.jb51.net/article/34712.htm
二、学习数据库系统表的功能,如何利用 sql 语句查询库名、表名、字段名、内容以及当前用户等基本信息,将学习过程中关键部分整理成报告
扩展学习:尝试查询出用户的 hash,并使用 hashcat 来对获取的 hash 进行暴力破解
部分解释
1、 对于关系型数据库,都会提供文件读写的功能,但是具体如何实现略有不同,文件读写在我们利用数据库注入漏洞获取 webshell 的时候非常有帮助,所以读写文件的基础是必须要学的。
2、 任何关系型数据库,在默认安装成功之后会自带一些默认的系统库和表,这些库和表存储了数据库中很多关键的信息,比如用户创建的库相关信息、表相关信息、用户相关信息、权限相关信息、安装配置相关信息等,在我们利用注入漏洞获取更多信息和权限的过程中有很大的帮助,所以熟悉数据库默认的系统库和表也是很必要的。
3、 对于关系型数据库,为了安全都会存在用户和密码,但是密码是经过哈希之后存储在系统表中的,当我们通过注入获取数据库的账号和哈希之后,想要知道哈希之前的明文信息,需要进行暴力破解操作,对于跑哈希来说,hashcat 可以利用 GPU 快速破解哈希,支持非常多的哈希格式,在未来的红蓝对抗中帮助很大。
记录过程如下:
show databases;命令可以直接列出所有的库:
信息之路(第三周作业)-数据库系统表相关学习_第2张图片
information_schema库:
参考文章:
https://cloud.tencent.com/developer/article/1340819
此库都有哪些表:
信息之路(第三周作业)-数据库系统表相关学习_第3张图片
information_schema库是信息数据库,保存着关于Mysql服务器所维护的所有其他数据库的信息,如数据库信息,数据库中的表信息,表中的列信息、索引信息,表权限信息、视图信息等等。
注意下列命令的前提是use information_schema。
数据库信息表(SCHEMATA,show databases的结果来自于此表)的具体数据如下:
select * from schemata\G;
信息之路(第三周作业)-数据库系统表相关学习_第4张图片
也可以使用下面的命令来查询表的所有字段:
show full columns from schemata\G;
信息之路(第三周作业)-数据库系统表相关学习_第5张图片
tables表提供了数据库中的表的信息(select查询tables表内容):
信息之路(第三周作业)-数据库系统表相关学习_第6张图片
一共281行数据,说明整个mysql数据库共有281张表(MySQL5.7 默认的模式有:information_schema, 具有 61个表; m ysqL, 具有31个表; performance_schema,具有87个表; sys, 具有1个表, 100个视图.再加上上次作业在new_test库里建了一张表,一共281)
当然可以只查某个数据库里一共有哪些表了:
select * from tables where table_schema=‘数据库名’\G;
信息之路(第三周作业)-数据库系统表相关学习_第7张图片
用户权限表(user_privileges,数据来自mysql库的user表):
select * from user_privileges\G;
信息之路(第三周作业)-数据库系统表相关学习_第8张图片
再来看看mysql库有哪些表:
信息之路(第三周作业)-数据库系统表相关学习_第9张图片
user表应该跟用户有关,看看里面有哪些字段:
show full columns from user\G;
信息之路(第三周作业)-数据库系统表相关学习_第10张图片
信息之路(第三周作业)-数据库系统表相关学习_第11张图片
从此表中查看用户信息:
信息之路(第三周作业)-数据库系统表相关学习_第12张图片
performance_schema库:
信息之路(第三周作业)-数据库系统表相关学习_第13张图片
参考文档:
https://dev.mysql.com/doc/refman/5.7/en/performance-schema.html
这个库用于监视低级别的mysql服务器运行过程中的性能情况。
sys库:
参考文章:
https://yq.aliyun.com/articles/336269
信息之路(第三周作业)-数据库系统表相关学习_第14张图片
sys库中的数据来源于information_schema
看看sys_config表:
在这里插入图片描述
使用hashcat爆破hash值:
hashcat工具是kali自带的,可以直接在kali里使用,免得自己安装了,看看用法:
信息之路(第三周作业)-数据库系统表相关学习_第15张图片
信息之路(第三周作业)-数据库系统表相关学习_第16张图片
hashcat --force -a 0 -m 300 6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 dict.txt -o md5.txt
在这里插入图片描述
信息之路(第三周作业)-数据库系统表相关学习_第17张图片

你可能感兴趣的:(web安全)