SQLMap

SQL Map 详解

  • SQLMap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定URL的SQL注入漏洞,内置了很多绕过插件,支持的数据是MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBMDB2,SQLite,Firebird,Sybase和SAP MaxDB。
  • SQLMap采用的5种独特的SQL注入技术
    • 基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入。
    • 基于时间的盲注, 即不能根据页面返回的内容判断任何信息, 要用条件语句查看时间延迟语句是否已执行 (即页面返回时间是否增加)来判断。
    • 基于报错注入,即页面会返回错误信息, 或者把注入的语句的结果直接返回到页面中。
    • 联合查询注入,在可以使用Union的情况 下的注入。
    • 堆查询注入,可以同时执行多条语句时的注入。

安装SQLMap

  • 由于SQLMap是基于Python语言的,所以需要先安装Python语言环境
  • 下载地址:https://www.python.org/downloads
  •  

     

     

  • 安装并配置环境变量

    按“win+R"键,输入sysdm.cpl

     选择高级

    • 点击环境变量——选择系统变量path——新建

      把python27(就是刚才安装默认生成的文件夹)的路径加进去,点击确定后离开。

      配置完以后重启系统,查看是否生效,“win+R”,输入cmd,然后输入python,显示版本信息配置成功

      sqlmap下载

      下载地址:http://sqlmap.org/

      直接将下载的SQLMap安装包解压到“C:/Python27”目录下

      安装成功

      建立快捷方式

      显示正常,设置完成。

SQLMap的功能

  • 数据库指纹识别
  • 数据库枚举
  • 数据提取
  • 访问目标文件系统, 并在获取完全的操作权限时实行任意命令。

SQLMap 进阶:参数讲解

  • --level 5:探测等级
    • 参数--level 5指需要执行的测试等级,一共有5个等级(1~5),可不加level,默认是1.SQLMap使用的Payload可以 在xml/payloads.xml中看到,也可以根据相应的格添加自己的Payload,其中5级包含的Payload最多, 会自动破解出cookie、XFF等头部注入。(level5的运行速度比较慢)
    • 这个参数会影响测试的注入点,GET和 POST的数据都会进行测试,HTTPcook在level为2时就会测试,HTTP UserAgent/Referer头 在level为3时就会测试。总之,不确定哪个Payload或参数为注入点时, 为了保证全面性,建议使用高的level值。
  • --is-dba:当前用户是否为管理权限
    • 该命令用于查看当前账户是否为数据库管理员账户。
  • --roles:列出数据库管理员角色
    • 该命令用于查看数据库用户的角色。 如果当前用户有权限读取包含所有用户的 表,输入该命令会列举出每个用户的角色,也可以用-U参数指定想看哪个用户的角色。该命令仅使用于当前数据库是Oracle的时候。
  • --referer:HTTP Referer头
    • SQLMap 可以在请求中伪造HTTP中的referer,当--level参数设定为3或3以上时,会尝试对referer注入。可以使用referer命令来欺骗,如--referer http://www.baidu.com.
  • --sql-shell:运行自定义SQL语句
  • --os-cmd,--os-shell:运行任意操作系统命令
    • 在数据库为MySQL、PostgreSQL或MicrosoftSQL Server,并且当前用户有权限使用特定的函数时,如果数据库为MySQL ,PostgreSQL,SQLMap上传一个二进制库,包含用户自定义的函数sys_exec)和sys_eval(), 那么创建的这两个函数就可以执行系统命令。在Microsoft SQLServer中,SQLMap将使用xp_ cmdshell存储过程,如果被禁用(在Microsoft SQL Server 2005及以上版本默认被禁制), 则SQLMap会重新启用它:如果不存在,会自动创建。
    • 用--os-shell参数可以模拟一个真实的Shell, 输入想执行的命令。当不能执行多语句时 (比如PHP或ASP的后端数据库为MySQL), 仍然可以使用INTO OUTFILE写进可写目录,创建一个Web后门。-os- shell支持ASP、ASP.NET、JSP和PHP四种语言 (要想执行改参数,需要有数据库管理员权限, 也就是-is-dba的值要为True).
  • --file-read:从数据库服务器中读取文件
    • 该命令用于读取执行文件, 当数据库为MySQL、PostgreSQL或Microsoft SQLServer, 并且当前用户有权限使用特定的函数时, 读取的文件可以是文本,也可以是二进制文件。
  • --file-write --file-dest:上传文件到数据库服务器中
    • 该命令用于写入本地文件到服务器中,当数据库为MySQL,PostgreSQL或Microsoft SQL server,并且当前用户有权限使用特定的函数时,上传的文件可以是文本,也可以是二进制文件。
  • SQLMap自带绕过脚本tamper的讲解
    • SQLMap在默认情况下除了使用CHAR()函数防止出现单引号,没有对注入的数据进行修改,还可以使用–tamper参数对数据做修改来绕过waf等设备。
    • 一个最小的tamper脚本结构为priority变量定义和dependencies,tamper函数定义
      • priority定义脚本的优先级,用于有多个tamper脚本的情况
      • dependencies函数声明该脚本适用/不适用的范围,可以为空
    • 常用的脚本
      • postrophemask.py
        • 适用数据库:ALL
        • 作用:将引号替换为utf-8,用于过滤单引号
        • 使用脚本前:1 AND '1'='1
        • 使用脚本后:1 AND %EF%BC%871%EF%BC%87=%EF%BC%871
      • base64encode.py
        • 适用数据库:ALL
        • 作用:替换为base64编码
        • 使用脚本前:1' AND SLEEP(5)#
        • 使用脚本后:MScgQU5EIFNMRUVQKDUpIw==
      • multiplespaces.py
        • 适用数据库:ALL
        • 作用:围绕sql关键字添加多个空格
        • 使用脚本前:1 UNION SELECT foobar
        • 使用脚本后:1 UNION SELECT foobar
      • space2plus.py
        • 适用数据库:ALL
        • 作用:用加号替换空格
        • 使用脚本前:SELECT id FROM users
        • 使用脚本后:SELECT+id+FROM+users
      • nonrecursivereplacement.py
        • 适用数据库:ALL
        • 作用:作为双重查询语句,用双重语句替代预定义的sql关键字(适用于非常弱的自定义过滤器,例如将select替换为空)
        • 使用脚本前:1 UNION SELECT 2--
        • 使用脚本后:1 UNIOUNIONN SELESELECTCT 2--
      • space2randomblank.py
        • 适用数据库:ALL
        • 作用:将空格替换为其他有效字符
        • 使用脚本前:SELECT id FROM users
        • 使用脚本后:SELECT%0Did%0DFROM%0Ausers
      • unionalltounion.py
        • 适用数据库:ALL
        • 作用:将union all select 替换为union select
        • 使用脚本前:-1 UNION ALL SELECT
        • 使用脚本后:-1 UNION SELECT
      • securesphere.py
        • 适用数据库:ALL
        • 作用:追加特定的字符串
        • 使用脚本前:1 AND 1=1
        • 使用脚本后:1 AND 1=1 and '0having'='0having'
      • space2dash.py
        • 适用数据库:ALL
        • 作用:将空格替换为--,并添加一个随机字符串和换行符
        • 使用脚本前:1 AND 9227=9227
        • 使用脚本后:1%23nVNaVoPYeva%0AAND%23ngNvzqu%0A9227=9227
      • space2mssqlblank.py(mssql)
        • 适用数据库:Microsoft SQL Server
        • 测试通过数据库:Microsoft SQL Server 2000、Microsoft SQL Server 2005
        • 作用:将空格随机替换为其他空格符号('%01', '%02', '%03', '%04', '%05', '%06', '%07', '%08', '%09', '%0B', '%0C', '%0D', '%0E', '%0F', '%0A'),并添加一个换号符
        • 使用脚本前:SELECT id FROM users
        • 使用脚本后:SELECT%0Eid%0DFROM%07users
      • space2mssqlhash.py
        • 作用:将空格替换为#号,并添加一个换号符
        • 使用脚本前:1 AND 9227=9227
        • 使用脚本后:1%23%0AAND%23%0A9227=9227
      • between.py
        • 作用:用NOT BETWEEN 0 AND 替换大于号(>),用BETWEEN AND 替换等号(=)
        • 使用脚本前:1 AND A > B--
        • 使用脚本后:1 AND A NOT BETWEEN 0 AND B--
      • 测试通过数据库:Microsoft SQL Server 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0
    • percentage.py
      • 适用数据库:ASP
      • 测试通过数据库:Microsoft SQL Server 2000, 2005、MySQL 5.1.56, 5.5.11、PostgreSQL 9.0
      • 作用:在每个字符前添加一个%
      • 使用脚本前:SELECT FIELD FROM TABLE
      • 使用脚本后:%S%E%L%E%C%T %F%I%E%L%D %F%R%O%M %T%A%B%L%E
    • sp_password.py
    • 适用数据库:MSSQL
    • 作用:从T-SQL日志的自动迷糊处理的有效载荷中追加sp_password
    • 使用脚本前:1 AND 9227=9227--
    • 使用脚本后:1 AND 9227=9227-- sp_password
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值