自学内容网 自学内容网

SQL Injection | MySQL 数据库概述

关注这个漏洞的其他相关笔记:SQL 注入漏洞 - 学习手册-CSDN博客

0x01:MySQL 数据库简介

MySQL 是一个流行的关系型数据库管理系统(RDBMS),它基于 SQL (Structured Query Language)进行操作。MySQL 是由瑞典 MySQL AB 公司开发的,后来被 Sun Microsystems 收购,最终称为 Oracle 公司的产品。它是一个开源项目,遵循 GNU 通用公共许可证(GPL)发布,同时也提供了商业许可。

0x0101:MySQL 数据库特点

以下是 MySQL 的一些关键特点:

  • 开源性: MySQL 是开源的,这意味着你可以免费下载和使用它,甚至可以修改源代码以满足需求。

  • 跨平台: MySQL 可以在多种操作系统上运行,包括 Linux、Windows、MacOS 等。

  • 高性能: MySQL 以其高性能和可靠性而闻名,适用于处理大量数据和高并发请求。

  • 安全性: MySQL 提供了强大的数据加密和访问控制功能,以保护数据不被未授权访问。

  • 灵活性: MySQL 支持多种数据类型,包括数值、日期和时间、字符串等,并且可以存储大型对象如图片和视频。

  • 可扩展性: MySQL 具有良好的可扩展性,可以通过主从复制、分片和分区等技术来实现对数据的扩展,从而提高系统的高可用性和高性能。

  • 支持多种变成语言: MySQL 支持多种编程语言进行开发,如 C、C++、Java、Python 等,这使得开发者可以在不同的平台上使用 MySQL 进行开发。

0x0102:MySQL 数据库应用场景

MySQL 在多种场景下被广泛使用,包括但不限于以下几种情况:

  • Web 应用: MySQL 是许多 Web 应用的首选数据库系统,特别是于 PHP、Python、Java 等后端技术结合使用。许多流行的 Web 框架和 CMS(内容管理系统),如 WordPress、Drupal 等,都支持 MySQL 作为其后端数据库。

  • 电子商务: 在电子商务网站中,MySQL 用于存储用户信息、产品信息、订单详情等关键数据。由于 MySQL 具有高性能和可扩展性,因此它可以轻松处理大量并发请求和交易数据。

  • 企业应用: 许多企业使用 MySQL 来构建和管理其内部系统,如 ERP(企业资源计划)、CRM(客户关系管理)和 BI(商业智能)系统等。这些系统需要存储、处理和查询大量数据,而 MySQL 提供了可靠的性能和安全性。

  • 数据分析: 虽然 MySQL 不是一个专门的数据仓库或大数据分析平台,但它仍然可以用于存储和分析结构化数据。许多组织使用 MySQL 作为其数据仓库的一部分,并使用 SQL 查询来提取和分析数据。

  1. 移动应用: 随着移动应用的普及,越来越多的开发者选择使用 MySQL 作为其后端数据库。通过 REST API 或其他技术,移动应用可以与 MySQL 数据库进行交互,实现用户认证、数据存储和检索等功能。

总而言之,只要你想将大量数据找个地方进行存储,并想要随时查询和分析这些数据,MySQL 数据库都是一个不错的选择。

0x02:MySQL 数据库详解

由于本文是 SQL 注入的前导知识,所以下面只介绍在注入 MySQL 数据库时,我们需要了解的相关内容。

0x0201:MySQL 数据库层级关系

我们通常将提供数据库服务的服务器,叫做 “数据库服务器”。在一个数据库服务器中,通常存在多个数据库,每个数据库中含有多张数据表,一张数据表中又有多个字段,每个字段中存储的才是我们需要的数据。

数据库服务器的这种结构很容易就让我们和 Excel 表格联系起来:一个 Excel 文件就是一个数据库,在一个 Excel 文件中我们又可以新建多张表,这就类似于数据表,每个表中又有:用户名、密码、手机号 ... 这样的字段,每个字段下面又会存储对应的数据。

0x0202:MySQL 系统库

在高版本(5.0 及以上)的 MySQL 数据库中存在四个系统库,分别为:information_schemaperformace_schemamysql、和 sys,它们提供了访问数据库元数据的方式。

元数据:关于数据库的数据,如数据库的库名,每个数据库中的表名、字段名等信息。

1. 系统库 - Information_schema

该系统库是信息数据库,其中保存着关于 MySQL 服务器所维护的所有其他数据库的信息。例如数据库或表的名称、列的数据类型或者访问权限、在 Web 渗透过程中有着举足轻重的地位。

1.1 SCHEMATA 表 - SCHEMA_NAME

SCHEMATA 表中保存了已有的所有数据库的信息。

该表中存储了 MySQL 实例中所有数据库的信息,show databases; 的结果就取自于此表:

mysql> select * from information_schema.schemata;
 +--------------+--------------------+----------------------------+------------------------+----------+
 | CATALOG_NAME | SCHEMA_NAME        | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH |
 +--------------+--------------------+----------------------------+------------------------+----------+
 | def          | information_schema | utf8                       | utf8_general_ci        | NULL     |
 | def          | challenges         | gbk                        | gbk_chinese_ci         | NULL     |
 | def          | dvwa               | utf8                       | utf8_unicode_ci        | NULL     |
 | def          | mysql              | latin1                     | latin1_swedish_ci      | NULL     |
 | def          | performance_schema | utf8                       | utf8_general_ci        | NULL     |
 | def          | pikachu            | utf8                       | utf8_unicode_ci        | NULL     |
 | def          | security           | gbk                        | gbk_chinese_ci         | NULL     |
 | def          | sys                | utf8                       | utf8_general_ci        | NULL     |
 +--------------+--------------------+----------------------------+------------------------+----------+
 8 rows in set (0.00 sec)
1.2 TABLES 表 - TABLE_NAME

TABLES 表中保存了所有已有的数据表的信息。

该表中存储了已有数据库中所创建的所有表的信息,可以通过此表,获取每个数据库下面已有的表名:

mysql> select * from information_schema.tables;
 +---------------+--------------------+------------------------------------------------------+-------------+--------------------+---------+------------+------------+----------------+-------------+--------------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+--------------------+-----------------------------------------+
 | TABLE_CATALOG | TABLE_SCHEMA       | TABLE_NAME                                           | TABLE_TYPE  | ENGINE             | VERSION | ROW_FORMAT | TABLE_ROWS | AVG_ROW_LENGTH | DATA_LENGTH | MAX_DATA_LENGTH    | INDEX_LENGTH | DATA_FREE | AUTO_INCREMENT | CREATE_TIME         | UPDATE_TIME         | CHECK_TIME | TABLE_COLLATION   | CHECKSUM | CREATE_OPTIONS     | TABLE_COMMENT                           |
 +---------------+--------------------+------------------------------------------------------+-------------+--------------------+---------+------------+------------+----------------+-------------+--------------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+--------------------+-----------------------------------------+
 | def           | information_schema | CHARACTER_SETS                                       | SYSTEM VIEW | MEMORY             |      10 | Fixed      |       NULL |            384 |           0 |           65739264 |            0 |                 0 |           NULL | 2023-08-18 08:01:31 | NULL                | NULL       | utf8_general_ci   |     NULL | max_rows=174762    |                                         |
 | def           | information_schema | COLLATIONS                                           | SYSTEM VIEW | MEMORY             |      10 | Fixed      |       NULL |            231 |           0 |           66819522 |            0 |                 0 |           NULL | 2023-08-18 08:01:31 | NULL                | NULL       | utf8_general_ci   |     NULL | max_rows=290514    |                                         |
 | def           | information_schema | COLLATION_CHARACTER_SET_APPLICABILITY                | SYSTEM VIEW | MEMORY             |      10 | Fixed      |       NULL |            195 |           0 |           65431080 |            0 |                 0 |           NULL | 2023-08-18 08:01:31 | NULL                | NULL       | utf8_general_ci   |     NULL | max_rows=344148    |                                         |
 | def           | information_schema | COLUMNS                                              | SYSTEM VIEW | InnoDB             |      10 | Dynamic    |       NULL |              0 |       16384 |                  0 |            0 |   8388608 |           NULL | NULL                | NULL                | NULL       | utf8_general_ci   |     NULL | max_rows=11156     |                                         |
 | def           | information_schema | COLUMN_PRIVILEGES                                    | SYSTEM VIEW | MEMORY             |      10 | Fixed      |       NULL |           2565 |           0 |           67028580 |            0 |                 0 |           NULL | 2023-08-18 08:01:31 | NULL                | NULL       | utf8_general_ci   |     NULL | max_rows=26163     |                                         |
 | def           | information_schema | ENGINES                                              | SYSTEM VIEW | MEMORY             |      10 | Fixed      |       NULL |            490 |           0 |           66297000 |            0 |                 0 |           NULL | 2023-08-18 08:01:31 | NULL                | NULL       | utf8_general_ci   |     NULL | max_rows=136956    |                                         |
 | def           | information_schema | EVENTS                                               | SYSTEM VIEW | InnoDB             |      10 | Dynamic    |       NULL |              0 |       16384 |                  0 |            0 |   8388608 |           NULL | NULL                | NULL                | NULL       | utf8_general_ci   |     NULL | max_rows=2473      |                                         |
 | def           | information_schema | FILES                                                | SYSTEM VIEW | MEMORY                   |      10 | Fixed      |       NULL |          14468 |           0 |           67088116 |            0 |                   0 |           NULL | 2023-08-18 08:01:31 | NULL                | NULL       | utf8_general_ci   |     NULL | max_rows=4638      |                                         |
 | def           | information_schema | GLOBAL_STATUS                                        | SYSTEM VIEW | MEMORY             |      10 | Fixed      |       NULL |           3268 |           0 |           67026680 |            0 |                 0 |           NULL | 2023-08-18 08:01:31 | NULL                | NULL       | utf8_general_ci   |     NULL | max_rows=20535     |                                         |
 | def           | information_schema | GLOBAL_VARIABLES                                     | SYSTEM VIEW | MEMORY             |      10 | Fixed      |       NULL |           3268 |           0 |           67026680 |            0 |                 0 |           NULL | 2023-08-18 08:01:31 | NULL                | NULL       | utf8_general_ci   |     NULL | max_rows=20535     |                                         |
 | def           | information_schema | KEY_COLUMN_USAGE                                     | SYSTEM VIEW | MEMORY             |      10 | Fixed      |       NULL |           4637 |           0 |           67064931 |            0 |                 0 |           NULL | 2023-08-18 08:01:31 | NULL                | NULL       | utf8_general_ci   |     NULL | max_rows=14472     |                                         |
 | def           | information_schema | OPTIMIZER_TRACE                                      | SYSTEM VIEW | InnoDB             |      10 | Dynamic    |       NULL |              0 |       16384 |                  0 |            0 |   8388608 |           NULL | NULL                | NULL                | NULL       | utf8_general_ci   |     NULL | max_rows=2314098   |                                         |
 | def           | information_schema | PARAMETERS                                           | SYSTEM VIEW | InnoDB             |      10 | Dynamic    |       NULL |              0 |       16384 |                  0 |            0 |   8388608 |           NULL | NULL                | NULL                | NULL       | utf8_general_ci   |     NULL | max_rows=24087     |                                         |
 -> 后面省略
 +---------------+--------------------+------------------------------------------------------+-------------+--------------------+---------+------------+------------+----------------+-------------+--------------------+--------------+-----------+----------------+---------------------+---------------------+------------+-------------------+----------+--------------------+-----------------------------------------+
 292 rows in set (0.07 sec)
1.3 COLUMNS 表 - COLUMN_NAME

COLUMNS 表中存储了数据库中所有表的字段信息。

该表中提供了每个数据库中的列(字段)信息,详细描述了某张表的所有列以及每个列的信息:

mysql> select * from information_schema.columns limit 0,2;
 +---------------+--------------------+----------------+----------------------+------------------+----------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+-----------------+-------------+------------+-------+------------+----------------+-----------------------+
 | TABLE_CATALOG | TABLE_SCHEMA       | TABLE_NAME     | COLUMN_NAME          | ORDINAL_POSITION | COLUMN_DEFAULT | IS_NULLABLE | DATA_TYPE | CHARACTER_MAXIMUM_LENGTH | CHARACTER_OCTET_LENGTH | NUMERIC_PRECISION | NUMERIC_SCALE | DATETIME_PRECISION | CHARACTER_SET_NAME | COLLATION_NAME  | COLUMN_TYPE | COLUMN_KEY | EXTRA | PRIVILEGES | COLUMN_COMMENT | GENERATION_EXPRESSION |
 +---------------+--------------------+----------------+----------------------+------------------+----------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+-----------------+-------------+------------+-------+------------+----------------+-----------------------+
 | def           | information_schema | CHARACTER_SETS | CHARACTER_SET_NAME   |                1 |                | NO          | varchar   |                       32 |                     96 |              NULL |          NULL |                           NULL | utf8               | utf8_general_ci | varchar(32) |            |       | select     |                |                       |
 | def           | information_schema | CHARACTER_SETS | DEFAULT_COLLATE_NAME |                2 |                | NO          | varchar   |                       32 |                     96 |              NULL |          NULL |                         NULL | utf8               | utf8_general_ci | varchar(32) |            |       | select     |                |                       |
 +---------------+--------------------+----------------+----------------------+------------------+----------------+-------------+-----------+--------------------------+------------------------+-------------------+---------------+--------------------+--------------------+-----------------+-------------+------------+-------+------------+----------------+-----------------------+
 2 rows in set (0.07 sec)

2. 系统库 - Performance_schema

该系统库是 MySQL 5.5 新增的一个数据库,主要用于收集和存储与数据库性能相关的统计信息和指标。它主要用于帮助运维人员对数据库性能进行监控、调优和故障排查。

3. 系统库 - Mysql

该库是整个数据库体系中的核心数据库,类似于 SQL Server 中的 master 表,主要负责存储数据库的用户(账户)信息、权限设置、关键字等 MySQL 自己需要使用的控制和管理信息。该库不可以删除,如果你对 MySQL 不是很了解,请不要轻易修改这个数据库里面的信息。

常用举例:在 mysql.user 表中修改 root 用户的密码。

4. 系统库 - Sys

sys 库是 MySQL 5.7 新增加的系统数据库,该库是专门为数据库管理员(DBA)设计的辅助库,旨在帮助用户更轻松地分析和解决数据库性能问题。

该库基于 performance_schema,通过各种预定义的视图和函数,简化了性能数据的访问和分析过程。通过使用 sys 系统库,DBA 可以更快获得有价值的性能信息,从而更好地管理和调优 MySQL 实例的性能和行为。


原文地址:https://blog.csdn.net/m0_73360524/article/details/142851507

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!