Bu1'Blog

如果能控制粗鄙的狂喜,就不会有深入骨髓的悲伤。

0%

第三周:数据库基础之数据库系统表相关学习

任务标题: 数据库基础之数据库系统表相关学习

1、如何利用数据库的功能读写文件,需要什么样的条件才可以读写

2、学习数据库系统表的功能,如何利用 sql 语句查询库名、表名、字段名、内容以及当前用户等基本信息,将学习过程中关键部分整理成报告

扩展学习:尝试查询出用户的 hash,并使用 hashcat 来对获取的 hash 进行暴力破解

学习报告

文件读写

  • 关于实现Mysql的文件读写功能,首先需要了解secure_file_priv的特性。

    a) secure_file_priv为null,表示不允许导入导出

    b) secure_file_priv指定文件夹时,表示mysql的导入导出只能发生在指定的文件夹

    c) secure_file_priv没有设置时,则表示没有任何限制

  • 在进行读写操作时,我们需要以下条件:

    a) 必须有权限读取并且文件必须完全可读

    b) and (select count() from mysql.user)>0/ 如果结果返回正常,说明具有读写权限。

    c) and (select count() from mysql.user)>0/ 返回错误,账户权限不够

    d) 欲读取文件必须在服务器上

    e) 必须指定文件完整的路径

    f) 欲读取文件必须小于 max_allowed_packet

  • 实例操作,读取nginx配置文件

    命令:show global variables like ‘%secure%’;

img

  • 这里我们发现读写操作已经限制在了指定文件夹,要想读取nginx的配置文件必须先进行修改把限制去掉。

    命令:sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf

    在文档末尾添加secure_file_priv=”/“

img

  • 重启mysql:

img

​ 命令:select load_file(‘etc/nginx/nginx.conf’);

img

这里已经读到这个文件了,但是文件内容没有显示,折腾了一会也没有解决办法。。。

  • 写文件:

    a) LOAD DATA INFILE语句可以用于高速地从一个文本文件中读取行,并装入一个表中

    b) SELECT…..INTO OUTFILE ‘file_name’语句将内容写入文件。(可插入一句话)

系统数据表

  • 查询库名。命令: show databases;

img

  • 进入数据库。命令: use information_schema;

img

  • 查询表名。命令:show tables;

img

  • 查询字段名。命令:desc USER_PRIVILEGES;

img

  • 查看当前用户。命令:select user();

img

  • 参考内容:上周学习内容。

使用Hashcat破解哈希

  • 根据第二点,选择mysql数据库,查询表名得到user表,再查询字段,选择我们想要的。

    具体显示命令:select User,Host,authentication_string from user;

img

​ 先识别下所属类型。命令:hashid -em *。。。

img

​ 到这里有个错误

img

​ 后面经过一番查找,原因是没有安装OpenCL(https://blog.csdn.net/u011781521/article/details/69485934)。

国内直链下载太慢了,需要FQ。虚拟机暂时没有配置。

  • 也可使用网站在线破解。

img

参考链接

https://blog.csdn.net/lixiangminghate/article/details/80548048

https://www.cnblogs.com/xm17/p/9691070.html

https://blog.csdn.net/qq_25899635/article/details/90449323

https://techglimpse.com/cracking-linux-password-hashes-with-hashcat

https://xz.aliyun.com/t/4008