SQLMAP

40 篇文章 35 订阅
32 篇文章 14 订阅

SQLMAP简介

SQLMAP可以对URL干嘛?

  • 判断可注入的参数
  • 判断可以使用哪一种SQL注入技术进行注入
  • 判断识别数据库的类型
  • 根据用户的选择从数据库中读取数据

SQLMAP支持的注入技术

  • 基于布尔的盲注:根据返回页面判断条件真假的注入。
  • 基于时间的盲注:不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
  • 基于报错的注入:页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
  • 基于联合查询的注入:可以使用UNION的情况下的注入。
  • 堆查询注入:同时执行多条语句的注入。

SQLMAP检测注入漏洞的流程

  • 网站连通性检测:检测目标的连接状态。
  • WAF探测:检测网站是否受WAF保护。
  • 网页稳定性检测:检测网页是否稳定。
  • 参数动态性检测:检测参数是否具有动态性。
  • 启发式注入检测:探测该参数点是否是动态的、是否为可能的注入点。

SQLMAP基本使用

常规注入

sqlmap -u ["URL"] //测试是否存在注入
sqlmap -u ["URL"] -current-db //查询当前数据库
sqlmap -u ["URL"] -D ["数据库名"] --tables //查询当前数据库中的所有表
sqlmap -u ["URL"] -D ["数据库名"] -T ["表名"] --columns //查询指定库中指定表的所有列(字段)
sqlmap -u ["URL"] -D ["数据库名"] -T ["表名"] -C ["列名"] --dump //打印出指定库中指定表指定列中的字段内容

 SQL基础及进阶命令

目标参数

参数:-u     直接输入目标URL 
参数:-m     从文件中取出保存的URL进行检测 
参数:-r     从文本中获取http请求 
参数:-g     测试注入Google的搜索结果的GET参数 
参数:-l     从Burp或者WebScarab代理中获取日志
参数:-c     指定配置文件,会按照该配置文件执行动作

 枚举参数

>参数:-b,--banner     列出版本号 
>参数:--dbs     列出所有数据库的库名 
>参数:--current-db     列出当前使用的数据库库名 
>参数:--tables     列出数据库中的表 
>参数:--columns     列出数据表中的字段 
>参数:--dump     查询字段值 
>参数:--users     列出所有管理用户 
>参数:--passwords     列出并破解数据库用户的hash 
>参数:--privileges     列出数据库管理员权限 

 请求参数

>参数:--method     指定使用的http方法 
>参数:--data     把数据以POST方式提交 
>参数:--param-del     GET或POST的数据用&以外的其他字符分割 
>参数:--cookie,--load-cookies,--drop-set-cookie     设置cookie 
>参数:--referer     伪造http中的referer头 
>参数:--user-agent     自定义http中的user-agent头 
>参数:--headers     增加额外的http头,不同的头使用“\n”分隔 
>参数:--timeout     设置超时时间 
>参数:--retries     设置重试次数 
>参数:--forms     尝试使用post注入 
>参数:--delay     设置多久访问一次    有些web服务器请求访问太过频繁可能会被防火墙拦截,使用--delay就可以设定两次http请求的延时
>参数:--safe-url    有的web服务器会在多次错误的访问请求后屏蔽所有请求,使用--safe-url 就可以每隔一段时间去访问一个正常的页面。

 检测参数

参数:-v     显示等级,共7个等级
参数:--risk     风险等级,共4个等级 
参数:-p,--skip     手动用-p参数设置想要测试的参数,--skip设置跳过的参数 
参数:--flush-session     清空SQLMAP缓存的会话信息 依次为0、1、2、3、4、5和6。
参数:--identify-waf     检测防火墙类型
参数:--null-connection     检索没有body响应的内容,多用于盲注
参数:- technique     指定 sqlmap使用的探测技术,B表示布尔盲注,T表示时间盲注(延迟注入),E表示报错注入,U表示联合查询注入,S表示堆查询注入 

注入技术参数 

>参数:--time-sec     设定延迟注入的时间(默认为5秒) 
>参数:- union-cols     设定UNON查询字段数 
>参数:- union-char     设定UNON查询时使用的字符 
>参数:- second- order     设置二次注入的URL 
>参数:--tamper     使用 sqlmap自带的 tamper或者自己写的 tamper来混淆payload,通常用来绕过WAF和PS。
>参数:--level     设置注入探测等级
>参数:--keep-alive     设置持久连接,加快探测速度
>参数:--thread 最大为10 设置多线程

操作系统权限参数

>参数:--os-cmd     执行操作系统命令 
>参数:--os-shell     交互式的操作系统的shell 

 文件读写参数

>参数:--file-read     读取文件 
>参数:--file-write     写入文件 
>参数:--file-dest     指明写入文件的绝对路径 

其他参数 

--batch     自动选择yes
--smart     启发式快速判断,节约浪费时间
-o     开启所有默认性能优化

使用sqlmap注入测试时,可以使用 -v [x] 参数来指定回显信息的复杂程度, x 的取值范围为[0~6]:

等级

解释

0

只显示python错误以及严重信息

1

同时显示基本信息和警告信息

2

同时显示debug信息

3

同时显示注入的pyload

4

同时显示HTTP请求

5

同时显示HTTP相应头

6

同时显示HTTP相应页面

--tamper 脚本信息

apostrophemask.py              用UTF-8全角字符替换单引号字符
apostrophenullencode.py        用非法双字节unicode字符替换单引号字符
appendnullbyte.py              在payload末尾添加空字符编码
base64encode.py                对给定的payload全部字符使用Base64编码
between.py                     分别用“NOT BETWEEN 0 AND #”替换大于号“>”,“BETWEEN # AND #”替换等于号“=”
bluecoat.py                    在SQL语句之后用有效的随机空白符替换空格符,随后用“LIKE”替换等于号“=”
chardoubleencode.py            对给定的payload全部字符使用双重URL编码(不处理已经编码的字符)
charencode.py                  对给定的payload全部字符使用URL编码(不处理已经编码的字符)
charunicodeencode.py           对给定的payload的非编码字符使用Unicode URL编码(不处理已经编码的字符)
concat2concatws.py            用“CONCAT_WS(MID(CHAR(0), 0, 0), A, B)”替换像“CONCAT(A, B)”的实例
equaltolike.py                用“LIKE”运算符替换全部等于号“=”
greatest.py                   用“GREATEST”函数替换大于号“>”
halfversionedmorekeywords.py  在每个关键字之前添加MySQL注释
ifnull2ifisnull.py            用“IF(ISNULL(A), B, A)”替换像“IFNULL(A, B)”的实例
lowercase.py                  用小写值替换每个关键字字符
modsecurityversioned.py       用注释包围完整的查询
modsecurityzeroversioned.py   用当中带有数字零的注释包围完整的查询
multiplespaces.py             在SQL关键字周围添加多个空格
nonrecursivereplacement.py    用representations替换预定义SQL关键字,适用于过滤器
overlongutf8.py               转换给定的payload当中的所有字符
percentage.py                 在每个字符之前添加一个百分号
randomcase.py                 随机转换每个关键字字符的大小写
randomcomments.py             向SQL关键字中插入随机注释
securesphere.py               添加经过特殊构造的字符串
sp_password.py                向payload末尾添加“sp_password” for automatic obfuscation from DBMS logs
space2comment.py              用“/**/”替换空格符
space2dash.py                 用破折号注释符“--”其次是一个随机字符串和一个换行符替换空格符
space2hash.py                 用磅注释符“#”其次是一个随机字符串和一个换行符替换空格符
space2morehash.py             用磅注释符“#”其次是一个随机字符串和一个换行符替换空格符
space2mssqlblank.py           用一组有效的备选字符集当中的随机空白符替换空格符
space2mssqlhash.py            用磅注释符“#”其次是一个换行符替换空格符
space2mysqlblank.py           用一组有效的备选字符集当中的随机空白符替换空格符
space2mysqldash.py            用破折号注释符“--”其次是一个换行符替换空格符
space2plus.py                 用加号“+”替换空格符
space2randomblank.py          用一组有效的备选字符集当中的随机空白符替换空格符
unionalltounion.py            用“UNION SELECT”替换“UNION ALL SELECT”
unmagicquotes.py              用一个多字节组合%bf%27和末尾通用注释一起替换空格符 宽字节注入
varnish.py                    添加一个HTTP头“X-originating-IP”来绕过WAF
versionedkeywords.py          用MySQL注释包围每个非函数关键字
versionedmorekeywords.py      用MySQL注释包围每个关键字
xforwardedfor.py              添加一个伪造的HTTP头“X-Forwarded-For”来绕过WAF

level有5个等级,默认等级为1,进行Cookie测试时使用--level 2 ,进行use-agent或refer测试时使用--level 3 ,进行 host 测试时使用--level 5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值