(本文仅为平时学习记录,若有错误请大佬指出,如果本文能帮到你那我也是很开心啦)
一、介绍
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 指定URL2 -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 mysql2 --dbms=DBMS 指定目标数据库类型
3.获取当前数据库
sqlmap -u "目标_url" --current-db --dbms mysql
4.获取当前数据库下表
1 sqlmap -u "目标_url" -D 库名 --dbms mysql --tables --batch -v2 -D DB 指定从某个数据库查询数据3 -v 显示信息的级别,一共有六级:4 0:只显示python 错误和一些严重信息5 1:显示基本信息(默认)6 2:显示debug信息7 3:显示注入过程的payload8 4:显示http请求包9 5:显示http响应头10 6:显示http相应页面
5.获取当前数据库中指定表下的字段
1 sqlmap -u "目标url" -D 库名 -T 表名 --columns2 -T TBL 指定从某个表查询数据
6.获取指定字段对应的数据内容
1 sqlmap -u "目标url" -D 库名 -T 表名 -C 字段名1,字段名2,等等 --dump2 -C COL 指定从某个列查询数据3 --dump 查询指定范围的全部数据4 (对加密的密码进行彩虹表攻击)
五、SQLM