SQLMap使用要点

简介

注入技术:

  • 基于布尔类型的盲注。
  • 基于时间的盲注。
  • 基于报错注入。
  • 联合查询注入。
  • 堆查询注入。

入门

  1. 判断是否存在注入

    sqlmap -u {URL}

注入点参数>=2时,需要添加双引号:

sqlmap -u “{URL}”

  1. 判断文本中的请求是否存在注入
    直接从文本文件中获取HTTP请求,无需设置cookie、POST等参数。

    sqlmap -r {FILE_PATH}

  2. 查询参数

参数 缩写 含义 备注
- -dbs -D 数据库名
- -tables -T 表名
- -columns -C 字段名
- -dump 获取具体信息 需要指定前三个参数
- -users 列出所有管理用户 当前用户有权限读取包含所有用户的表
- -passwords 列出数据库用户密码 当前用户有权限读取包含用户密码的表
- -current-db 列出当前使用的数据库
- -current-user 列出当前使用的数据库用户

进阶

参数 含义 备注 示例
- -level 5 执行的测试等级,越高越全面 一级:GET、POST,二级:cookie,三级:User-Agent、Referer,五级:全部测试
- -is-dba 是否为管理权限
- -roles 列出数据库管理员账号
- -referer HTTP Referer头 - -referer http://www.examples.com
- -sql-shell 执行制定SQL语句
- -os-cmd 运行任意操作系统命令
- -file-read 从数据库服务器中读取数据 - -file-read “{FILE_PATH}” -v 1
- -file-write,- -file-dest 上传文件到数据库服务器中 - -file-write “{SRC_FILE_PATH}” - -file-dest “{DST_FILE_PATH}” -v 1

高阶:绕过脚本tamper讲解

脚本名称 作用 支持的数据库 测试通过的数据库类型和版本
apostrophemask.py 用utf8代替引号 all
base64encode.py 用base64编码替换 all
multiplespaces.py 围绕SQL关键字添加多个空格 all
space2plus.py 用+替换空格 all
nonrecursivereplacement.py 双重查询语句。取代predefined SQL关键字with表示;suitable for替代(例如 .replace(“SELECT”、””)) filters all
space2randomblank.py 代替空格字符(“”)从一个随机的空白字符可选字符的有效集 all
unionalltounion.py 替换UNION ALL SELECT UNION SELECT all
securesphere.py 追加特制的字符串 all
space2hash.py 绕过过滤’=’替换空格字符(“),(‘–’)后跟一个破折号注释,一个随机字符串和一个新行(‘n’) MSSQL
equaltolike.py like 代替等号 MSSQL Microsoft SQL Server 2005、MySQL 4, 5.0 and 5.5
space2mssqlblank.py 空格替换为其它空符号 MSSQL Microsoft SQL Server 2000、Microsoft SQL Server 2005
space2mssqlhash.py 替换空格 MSSQL
between.py 用between替换大于号(>) MSSQL Microsoft SQL Server 2005、MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0
percentage.py asp允许每个字符前面添加一个%号 MSSQL
sp_password.py 追加sp_password’从DBMS日志的自动模糊处理的有效载荷的末尾 MSSQL
charencode.py url编码 MSSQL
randomcase.py 随机大小写 MSSQL
charunicodeencode.py 字符串 unicode 编码 MSSQL
space2comment.py 使用’/**/‘替换空格 MSSQL
greatest.py 绕过过滤’>’ ,用GREATEST替换大于号。 MYSQL MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0
apostrophenullencode.py 绕过过滤双引号,替换字符和双引号。 MYSQL MySQL 4, 5.0 and 5.5、Oracle 10g、PostgreSQL 8.3, 8.4, 9.0
ifnull2ifisnull.py 绕过对 IFNULL 过滤。替换类似’IFNULL(A, B)’为’IF(ISNULL(A), B, A)’ MYSQL MySQL 5.0 and 5.5
space2mssqlhash.py 替换空格 MSSQL
modsecurityversioned.py 过滤空格,包含完整的查询版本注释 MSSQL MySQL 5.0
space2mysqlblank.py 空格替换其它空白符号 MSSQL MySQL 5.1
modsecurityzeroversioned.py 包含了完整的查询与零版本注释 MSSQL MySQL 5.0
space2mysqldash.py 替换空格字符(”)(’ – ‘)后跟一个破折号注释一个新行(’ n’) MSSQL
bluecoat.py 代替空格字符后与一个有效的随机空白字符的SQL语句。然后替换=为like MSSQL MySQL 5.1, SGOS
请我吃糖~