一、介绍
1.简介
SQLMAP是一种开源渗透测试工具,可自动执行SQL注入缺陷的检测和注入过程,并接管数据库服务器。它有强大的检测引擎,针对不同类型的数据库提供多样的渗透测试功能选项,实现数据库识别、数据获取、访问DBMS\操作系统甚至通过带外数据连接的方式执行操作系统的命令。以及从数据库指纹识别、从数据库获取数据、 通过带外连接在操作系统上执行命令。
2.功能
- 自动化SQL注入检测工具
- 它可以读取数据库内容
- 获取数据库权限、系统权限
3.SQL注入技术
布尔盲注、时间盲注、报错注入、联合查询、堆叠注入
4.工具网站
sqlmap: automatic SQL injection and database takeover tool
5.语法
python3 sqlmap.py
二、使用
1.查看帮助信息
python3 sqlmap.py -h
python3 sqlmap.py -hh
2.Target
-d 指定直接数据库连接得连接字符串,直接连接到数据库。
-u 指定URL目标
-I 从Burp或WebScarab代理得日志中解析目标
-m 扫描文本文件中给出得多个目标,批量扫描
-r 从文本中加载HTTP请求。 * 标记注入位置
-g 将Google Dork得结果作为目标URLh
3.Techniques⽅法
-a 获取所有信息
-current-user 获取DBMS当前用户
--current-db 获取DBMS当前数据库
--hostname 获取DBMS当前主机名
--is-dba 检测当前用户是否为管理员用户
--users 枚举DBMS用户
--passwords 枚举DBMS用户密码hash
--dbs 枚举DBMS数据库
--tables 枚举DBMS数据库中得表
--columns 枚举DBMS数据库表得列名
--dump 转储DBMS数据库表
--dump-all 转储DBMS所有数据库表
-D db_name 指定要求枚举得DBMS数据库名
-T table_name 指定要枚举得DBMS表
-C column_name 指定要枚举得DBMS列
--batch 从不询问用户输入,使用所有默认配置
4.Request请求选项
--data=DATA 通过POST方式发送数据字符串
--cookie=COOKIE HTTP Cookie头 LMXCMS演示
--user-agent=AGENT 指定HTTP User-Agent头
--random-agent 使用随机选定得HTTP User-Agent头
--host=HOST 指定HTTP HOST header
--referer=REFERER 指定HTTP Referer header
--ignore-proxy 忽略系统默认代理配置
--proxy=PROXY 使用代理连接目标URL --proxy=" http://127.0.0.1:7891 "
--delay=DELAY 可以设定两个请求间得延迟
--timeout=TIMEOUT 可以设定一个请求超过多久判定为超时
--force-ssl 强制使用SSL/HTTPS
-- threads=THREADS HTTP(s)最大并发请求数(默认是1)
--dbms=DBMS 强制指定后端DBMS
--os=OS 强制指定后端得DBMS操作系统
--tamper 使用给定得脚本修改注入数据
5.Detection探测选择
--level=LEVEL 测试等级(1-5, default 1)
--risk=RISK 测试的风险等级(1-3, default 1)
--technique 来指定要使用哪种注入模式,快速扫描
- level 1 默认的等级,会进行基本的测试,包括GET和POST方式
- level 2 在原有的基础上增加对cookie的检测
- level 3 增加对USER AGENT/REFERER的检测
- level 4 更多的payload
- level 5 最高等级,包含所有的payload,会尝试自动破解出cookie、xff等头部注入(速度最慢)
6.访问文件系统
--file-read=D:/1.txt 从后端的数据库管理系统文件系统读取文件
--file-write=WFILE 编辑后端的数据库管理系统文件系统上的 本地文件
--file-dest=DFILE 后端的数据库管理系统写入文件的 绝对路径
7.权限操作-⽂件&命令&交互式
--os-cmd='whoami' 执行操作系统命令(OSCMD)
--os-shell 交互式的操作系统的shell
--priv-esc 数据库进程用户权限提升
--sql-shell 执行SQL语句
--file-write --file-dest 写入文件
二、sqlmap常见使用
python3 sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-3/?id=1 --file-write D:/00SIS/123.txt --file-dest D:/00SIS/1/123.php
三、tamper绕过
--tamper=base64encode.py
--tamper=test.py
space2comment.py 用/**/代替空格
apostrophemask.py 用utf8代替引号
equaltolike.py like代替等号
space2dash.py 绕过过滤‘=’ 替换空格字符(”),(’–‘)后跟一个破折号注释,一个随机字符串和一个新行
(’n’)
greatest.py 绕过过滤’>’ ,用GREATEST替换大于号。
space2hash.py 空格替换为#号,随机字符串以及换行符
apostrophenullencode.py 绕过过滤双引号,替换字符和双引号。
halfversionedmorekeywords.py 当数据库为mysql时绕过防火墙,每个关键字之前添加mysql版本评论
space2morehash.py 空格替换为 #号 以及更多随机字符串 换行符
appendnullbyte.py 在有效负荷结束位置加载零字节字符编码
ifnull2ifisnull.py 绕过对IFNULL过滤,替换类似’IFNULL(A,B)’为’IF(ISNULL(A), B, A)’
space2mssqlblank.py (mssql)空格替换为其它空符号
base64encode.py 用base64编码替换
space2mssqlhash.py 替换空格
modsecurityversioned.py 过滤空格,包含完整的查询版本注释
space2mysqlblank.py 空格替换其它空白符号(mysql)
between.py用between替换大于号(>)
space2mysqldash.py替换空格字符(”)(’ – ‘)后跟一个破折号注释一个新行(’ n’)
multiplespaces.py围绕SQL关键字添加多个空格
space2plus.py 用+替换空格
bluecoat.py 代替空格字符后与一个有效的随机空白字符的SQL语句,然后替换=为like
nonrecursivereplacement.py双重查询语句,取代SQL关键字
space2randomblank.py代替空格字符(“”)从一个随机的空白字符可选字符的有效集
sp_password.py追加sp_password’从DBMS日志的自动模糊处理的有效载荷的末尾
chardoubleencode.py双url编码(不处理以编码的)
unionalltounion.py替换UNION ALLSELECT UNION SELECT
charencode.py url编码
randomcase.py随机大小写
unmagicquotes.py宽字符绕过 GPCaddslashes
randomcomments.py用/**/分割sql关键字
charunicodeencode.py字符串 unicode 编码
securesphere.py追加特制的字符串
versionedmorekeywords.py注释绕过
space2comment.py替换空格字符串(‘‘) 使用注释‘/**/’
四、SQL注入流量特征
参数长度异常:攻击者通常会在参数后来尝试构建恶意语句,因此流量特征中需要寻找异常长度的参数。
特殊字符:攻击者通常使用非法字符来构建恶意SQL语句,如:单引号、分号、注释符
异常请求:攻击者肯能会在HTTP请求中包含多个语句或查询、包含错误或缺失的参数。
错误响应:如果应用程序未正确处理SQL注入语句,则可能会返回错误响应。
非常规流量:攻击者可能会在短时间发送大量请求且请求中包含恶意的SQL语句字符等
五、SQLMAP
1.静态特征
特征一: UA头
特征二: 关键字
特征三:在前几个数据包中,会检测是否过滤了 常见的字符
2.动态特征
@@version_compile_os特征
尝试访问上传的脚本文件 (tmpuwxuv.php tmpuhalq.php)
测试命令执行语句特征
调用sys_eval() sys_exec() 尝试执行代码和系统命令
标签:sqlmap,DBMS,--,数据库,py,空格,SQL From: https://blog.csdn.net/qq_58725061/article/details/142830096