MENU

文章目录

SQLmap命令手册

2020 年 09 月 30 日 • 阅读: 182 • 阅读设置

SQLmap命令手册


注意,该手册适用于1.41版本以下的SQLmap
本文所有内容均从SQLmap官方wiki翻译完成,并对各个参数进行了测试,保证可以正确使用


What is SQLmap?

What can do?

  1. 判断可注入的参数
  2. 判断使用哪种技术注入
  3. 识别数据库
  4. 根据选择读取数据库中的数据

5种注入模式

  1. 基于bool的盲注
  2. 基于时间的盲注
  3. 基于报错的注入
  4. 联合查询注入
  5. 堆叠查询注入

支持的数据库

  1. MySQL
  2. Oracle
  3. PostgreSQL
  4. MSSQL
  5. MS Access
  6. IBM DB2
  7. SQLlite
  8. Firebird
  9. Sybase
  10. SAP MaxDB
  11. HSQLDB
  12. Informix

基础命令

  • python sqlmap.py -参数1 目标 -参数2

帮助参数

1. -h--help

  1. 显示基本帮助信息并推出
  2. 用法:python sqlmap.py -h

2. -hh

  1. 显示高级帮助信息并退出
  2. 用法:python sqlmap.py -hh

3. --version

  1. 显示程序版本信息并退出
  2. python sqlmap.py --version

4. -v

  1. 观察SQLmap如何进行注入以及读取数据的
  2. 用法:python sqlmap.py -v 等级(默认为1)
  3. 等级(共7级)

    • 0只显示python错误以及严重的信息
    • 1同时显示基本信息和警告信息
    • 2同时显示debug信息
    • 3同时显示注入的payload
    • 4同时显示HTTP请求
    • 5同时显示HTTP响应头
    • 6同时显示HTTP相应页面

必须参数

至少存在一个必须参数

-u--url

  1. 指定URL
  2. 用法:python sqlmap.py -u http://127.0.0.1/?id=1

-d

  1. 直接连接数据库
  2. 用法:python sqlmap.py -d "mysql://user:password@ip:port/数据库名称"

-l

  1. 从Burp或者WebScarab代理日志文件中来解析目标
  2. 用法:python sqlmap.py -l 日志文件

-m

  1. 从文件中批量加载URL,一行一个URL
  2. 用法:python sqlmap.py -m 文件

-r

  1. 从文本文件中获取HTTP请求,常用于POST提交,以及设置UA、Cookie等
  2. 用法:python sqlmap.py -r 文件
  3. 文本文件例子:

    POST /abc
    Host: 127.0.0.1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0)
    
    id=1

-g

  1. 测试注入Google搜索结果中的GET参数(前100个结果)
  2. 用法:python sqlmap.py -g "inurl:\".php?id=1\""

-c

  1. 从配置ini文件中加载选项
  2. 用法:python sqlmap.py -c ini配置文件
  3. 具体配置可以参照SQLmap文件夹中的SQLmap.conf

请求参数

这些选项可用于指定如何连接到目标URL

-A或者--user-agent

  1. 指定URL的UA
  2. -level设置为3或者更高时,SQLmap会检测UA是否存在注入
  3. 用法:python sqlmap.py 必须参数 -A UA

-H或者--headers

  1. 指定额外的HTTP头
  2. 用法:python sqlmap.py 必须参数 -H HEADER

--method

  1. 强制使用给定的HTTP方法
  2. 用法:python sqlmap.py 必须参数 --method=方法
  3. 一般HTTP方法有:

    • GET 请求指定的页面信息,并返回实体主体
    • HEAD 类似于GET请求,只不过返回的相应中没有具体的内容,用于获取报头
    • POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
    • PUT 从客户端向服务器传送的数据取代指定的文档的内容
    • DELETE 请求服务器删除指定的页面
    • CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
    • OPTIONS 允许客户端查看服务器的性能
    • TRACE 回显服务器收到的请求,主要用于测试或者诊断
    • PATCH 是对PUT方法的补充,用来对已知资源进行局部更细。

--data

  1. 通过POST发送数据参数
  2. 用法:python sqlmap.py 必须参数 --data=数据参数

--param-del

  1. 指定发送数据中拆分参数值的字符
  2. 用法:python sqlmap.py 必须参数 --param-del=字符
  3. 例:python sqlmap.py -u "http://192.168.56.102:8080/user.php" --data="id=0;name=werner" --param-del=";"

--cookie

  1. 指定cookie
  2. -level设置为2或者更高时,SQLmap会检测cookie是否存在注入
  3. 用法:python sqlmap.py 必须参数 --cookie="dasfc23cdf4ffdsda1"

--cookie-del

  1. 指定cookie中拆分参数值的字符(与--param-del类似)
  2. 用法:python sqlmap.py 必须参数 --cookie-del="&"

--load-cookies

  1. 从文件中载入Netscape或wget格式的cookie
  2. 用法:python sqlmap.py 必须参数 --load-cookies=文件

--drop-set-cookie

  1. 忽略响应头中设置的cookie
  2. 用法:python sqlmap.py 必须参数 --drop-set-cookie

--random-agent

  1. 使用随机的UA
  2. 用法:python sqlmap.py 必须参数 --random-agent

--host

  1. 指定HTTP头中的Host值
  2. -level设置为5或者更高时,SQLmap会检测Host是否存在注入
  3. 用法:python sqlmap.py 必须参数 --host="HOST指定值"

--referer

  1. 指定HTTP请求头中的referer,SQLmap发送的HTTP请求默认无referer
  2. -level设置为3或者更高时,SQLmap会检测referer是否存在注入
  3. 用法:python sqlmap.py 必须参数 --referer REFERER

--auth-type

  1. 指定认证方式
  2. 支持以下身份认证方式

    • Basic
    • Digest
    • NTLM
    • PKI
  3. 用法:python sqlmap.py 必须参数 --auth-type Basic 其他auth认证参数

--auth-cred

  1. 指定认证的用户名密码
  2. 用法:python sqlmap.py 必须参数 --auth-type Basic --auth-cred "用户名:密码"

--auth-file

  1. 指定HTTP身份认证的PEM证书、私钥文件
  2. 用法:python sqlmap.py 必须参数 --auth-file="文件或链接"

--ignore-code

  1. 忽略HTTP错误代码
  2. 用法:python sqlmap.py 必须参数 --ignore-错误代码

--ignore-proxy

  1. 忽略系统默认的代理
  2. 用法:python sqlmap.py 必须参数 --ignore-proxy

--ignore-redirects

  1. 忽略重定向
  2. 用法:python sqlmap.py 必须参数 --ignore-redirects

--ignore-timeouts

  1. 忽略超时
  2. 用法:python sqlmap.py 必须参数 --ignore-timeouts

--proxy

  1. 设置一个HTTP代理连接目标URL
  2. 用法:python sqlmap.py 必须参数 --proxy="http\https\socks4\socks5://address:port"

--proxy-cred

  1. 为代理设置认证信息
  2. 用法:python sqlmap.py 必须参数 --proxy="http\https\socks4\sockes5://address:port" --proxy-cred=用户名:密码

--proxy-file

  1. 从文件加载代理
  2. 用法:python sqlmap.py 必须参数 --proxy-file=文件

--tor

  1. 使用tor网络
  2. 用法:python sqlmap.py 必须参数 --tor 其他tor参数

--tor-port

  1. 指定tor的端口
  2. 用法:python sqlmap.py 必须参数 --tor --tor-port 端口

--tor-type

  1. 设置tor的类型

    • HTTP
    • SOCKS4
    • SOCKS5(默认)
  2. 用法:python sqlmap.py 必须参数 --tor --tor-type=SOCKS5

--check-tor

  1. 检查是否使用了tor
  2. 用法:python sqlmap.py 必须参数 --tor 其他tor参数 --check-tor
  3. 此参数会保证所有流量走tor,若tor代理失效,SQLmap会发出警告并退出

--delay

  1. 为HTTP请求之间设置延迟,以秒为单位,默认无延迟
  2. 用法:python sqlmap.py 必须参数 --delay=1

--timeout

  1. 设置超时等待时间,以秒为单位,默认30秒超时
  2. 用法:python sqlmap.py 必须参数 --timeout 20

--retries

  1. 超时重试次数,默认为3次
  2. 用法:python sqlmap.py 必须参数 --retries 4

--randomize

  1. 随机生成HTTP请求中参数的值,值的类型和长度依照于原始值
  2. 用法:python sqlmap.py 必须参数 --randomize="HTTP参数"

--safe-url

  1. 每隔一段时间访问一个安全不错误的连接
  2. 用法:python sqlmap.py 必须参数 --safe-url="安全\不错误的URL" 其他safe参数

--safe-post

  1. 访问安全不错误连接时使用指定POST数据
  2. 用法:python sqlmap.py 必须参数 --safe-post POST数据

--safe-req

  1. 从文件加载安全不错误的HTTP请求
  2. 用法:python sqlmap.py 必须参数 --safe-req 文件

--safe-freq

  1. 每隔几次测试请求之后都会访问安全URL
  2. 用法:python sqlmap.py 必须参数 --safe-url="安全\不错误的URL" --safe-freq=3
  3. 使用safe-url必须使用safe-freq

--skip-urlencode

  1. 对payload跳过URL编码
  2. 用法:python sqlmap.py 必须参数 --skip-urlencode
  3. 因为有些网站不遵守RFC标准编码,所以需要跳过URL编码

--csrf-token

  1. 指定csrf-token的值
  2. 用法:python sqlmap.py 必须参数 --csrf-token=token参数

--csrf-url

  1. 指定csrf-token的url值
  2. 用法:python sqlmap.py 必须参数 --csrf-url=URL参数

--force-ssl

  1. 强制使用SSLHTTPS
  2. 用法:python sqlmap.py 必须参数 --force-ssl

--hpp

  1. 使用HTTP参数污染
  2. 用法:python sqlmap.py 必须参数 --hpp
  3. HTTP参数污染是绕过WAF/IPS/IDS的一种技术,针对ASP/ISS/(ASP.NET/ISS)平台尤其有效

--eval

  1. 在每次请求前执行指定python代码
  2. 用法:python sqlmap.py 必须参数 --eval="python代码"
  3. 某些时候,需要根据某个参数的变化来修改另一个参数才能形成正常请求,所以需要用python代码根据该参数来计算出另一个参数的值

优化参数

这些选项可以用来优化SQLmap的性能

-o

  1. 打开所有的优化开关(即--predict-output--keep-alive--null-connection)
  2. 用法:python sqlmap.py 必须参数 -o

--predict-output

  1. 预测常见的查询输出
  2. 用法:python sqlmap.py 必须参数 --predict-output
  3. 预设一个表,然后提交给服务器,根据返回值判断,类似暴力破解,但是每次破解都会缩小范围。

--keep-alive

  1. 保持HTTP(S)长连接
  2. 用法:python sqlmap.py 必须参数 --kepp-alive
  3. 性能好,避免重复建立链接,占用服务器资源。
  4. --proxy不兼容

--null-connection

  1. 只检索HTTP相应页大的长度,不检索实际内容(常用于盲注)
  2. python sqlmap.py 必须参数 --null-connection

--threads

  1. 多线程,默认为1,最大为10
  2. **与--predict-output不兼容
  3. 用法:python sqlmap.py 必须参数 --threads=3

注入参数

这些可选参数用于指定要测试的参数,提供定制的注入payload和可选的篡改脚本

-p

  1. 给出需要测试的参数
  2. 用法:python sqlmap.py 必须参数 -p "user-agent"

--skip

  1. 排除指定参数
  2. 用法:python sqlmap.py 必须参数 --skip="user-agent"

--skip-static

  1. 跳过非动态参数进行测试,即不检测固定参数
  2. 用法:python sqlmap.py 必须参数 --skip-static

--param-exclude

  1. 使用正则表达式排除某些参数
  2. 用法:python sqlmap.py 必须参数 --param-exclude=正则

--dbms

  1. 指定目标数据库类型、版本
  2. 用法:python sqlmap.py 必须参数 --dbms="mysql<版本>"

--dbms-cred

  1. 指定数据库的用户名密码
  2. 用法:python sqlmap.py 必须参数 --dbms-cred="用户名:密码"

--os

  1. 指定目标数据库的操作系统
  2. 用法:python sqlmap.py 必须参数 --os="Windows"

--invalid-bignum

  1. 使用大数字使参数失效,通常SQLmap会使用负数使参数失效
  2. 用法:python sqlmap.py 必须参数 --invalid-bignum

--invalid-logical

  1. 使用逻辑使参数失效,如id=1 and 1=2
  2. 用法:python sqlmap.py 必须参数 --invalid-logical

--invalid-string

  1. 使用随机字符使参数失效
  2. 用法:python sqlmap.py 必须参数 --invalid-string

--no-cast

  1. 在提取数据库数据时,将所有结果转换为字符串,并且空格替换NULL结果(老版本MySql需要使用此参数)
  2. 用法:python sqlmap.py 必须参数 --no-cast

--no-escape

  1. 不使用char替换字符串功能
  2. 出于混淆和避免出错的目的,如果payload使用单引号界定字符串,SQLmap使用char()编码逃避的方法替换字符串
  3. 用法:python sqlmap.py 必须参数 --no-escape

--prefix

  1. 指定payload的闭合语句的前缀
  2. 用法:python sqlmp.py 必须参数 --prefix="前缀"

--sufix

  1. 指定payload的闭合语句的后缀
  2. 用法:python sqlmap.py 必须参数 --sufix="后缀"

--tamper

  1. 使用混淆脚本,用来绕过WAF/IPS/应用过滤层
  2. 用法:python sqlmap.py 必须参数 --tamper="脚本文件"

探测参数

自定义在SQL盲注时如何解析和比较HTTP相应页面的内容

--level

  1. 指定检测等级(1~5,默认为1)
  2. 可以在sqlmap/xml/payloads文件内可以看到各个level发送的payload
  3. 各个level的检测数据

    1. 默认
    2. cookie
    3. user-agent
    4. referer
    5. host
  4. 用法:python sqlmap.py 必须参数 --level=3

--risk

  1. 指定风险等级(1~3,默认为1),升高风险等级会增加数据被篡改的风险
  2. 各个风险等级检测类型

    1. 默认
    2. 基于时间的SQL注入
    3. 基于or的SQL注入
  3. 用法:python sqlmap.py 必须参数 --risk=2

--string

  1. 在基于bool注入时,指定判断真假的字符串(常用于返回页面不固定时)
  2. 用法:python sqlmap.py 必须参数 --string="字符串"

--not-string

  1. 在基于bool注入时,指定没出现的字符串判断真假,与--string相反
  2. 用法:python sqlmap.py 必须参数 --not-string="字符串"

--regexp

  1. 在基于bool注入时,根据正则表达式来判断真假,与--not-string--string可以连用
  2. 用法:python sqlmap.py 必须参数 --regexp="正则表达式"

--code

  1. 在基于bool注入时,通过指定HTTP返回码来判断真假
  2. 用法:python sqlmap.py 必须参数 --code=200

--text-only

  1. 在bool注入时,通过文本内容判断真假
  2. 用法:python sqlmap.py 必须参数 --text-only

--titles

  1. 在bool注入时,通过标题判断真假
  2. 用法:python sqlmap.py 必须参数 --titles

技巧参数

这些参数可以用来调整SQL注入的测试技术

--technique

  1. 指定使用的SQL注入技术,默认为BEUSTQ
  2. 指定的技术如下:

    • B:bool盲注
    • E:报错注入
    • U:联合查询注入
    • S:堆叠注入
    • T:时间盲注
    • Q:内联查询注入
  3. 用法:python sqlmap.py 必须参数 --technique=BU

--time-sec

  1. 在时间盲注中,指定判断的时间,单位为秒,默认为5
  2. 用法:python sqlmap.py 必要参数 --time-sec=3

--union-cols

  1. 联合注入的尝试列数,随level增加最多支持50列,默认查询1-10列
  2. 用法:python sqlmap.py 必要参数 --time-cols 5-7

--union-char

  1. 在联合注入中,默认使用的占列的值是NULL,但是有时候NULL会失效,所以需要手动指定一个其他的占列值。
  2. 用法:python sqlmap.py 必要参数 --union-char=1

--union-from

  1. 在有些数据库中,必须指定一个有效且可访问的表,否则联合查询就会失败,所以必须使用该参数指定一个表
  2. 用法:python sqlmap.py 必须参数 --union-from=表名

--dns-domain

  1. 如果控制了一台DNS服务器,则可以使用该命令做DNS泄露攻击,通过攻击,可以在DNS的访问日志里得到查询的数据
  2. 用法:python sqlmap.py 必须参数 --dns-domain
  3. 注意!DBMS中需要有可用的,能直接或间接引发DNS解析过程的程序,即用到UNC1,其中引发DNS解析过程的函数有:

    • MSSQL

      • master..xp_dirtree(用于获取所有文件夹的列表和给定文件内部的子文件夹)
      • master..xp_fileexit(用于确定一个特定的文件是否存在于硬盘)
      • master..xp_subdirs(用于得到给定的文件夹内的文件夹列表)
    • Oracle

      • GET_HOST_ADDRESS(用于检索特定主机的IP)
      • UTL_HTTP.REQUEST(从给定的地址检索到第1~2000字节的数据)
    • MySql

      • load_file(读取文件内容并将其作为字符串返回)
    • PostgreSQL

      • COPY(用于在文件系统的文件和表之间拷贝数据)

--second-url

  1. 搜索二阶相应的结果页面的URL,即在一个页面注入,在另外一个页面显示,适合GET提交,POST提交需要下一个参数
  2. 用法:python sqlmap.py 必须参数 --second-url="另一个页面地址"

--second-req

  1. 与上一个相同,只是从文件加载HTTP请求
  2. 用法:python sqlmap.py 必须参数 --second-req="请求的文件地址"

指纹参数

-f--fingerprint

  1. 获取更广泛的DBMS操作系统、架构、补丁等信息
  2. 用法:python sqlmap.py 必须参数 -f

枚举参数

下列这些选项可以用于枚举数据库的系统信息、表的结构和数据,此外还可以执行自定义的SQL语句

-a--all

  1. 查找所有的信息,即枚举中所有的信息
  2. 用法:python sqlmap.py 必须参数 -a

-b--banner

  1. 查询数据库的标识,即数据库类型与版本
  2. 用法:python sqlmap.py 必须参数 -b

--current-user

  1. 查询数据库的当前用户
  2. 用法:python sqlmap.py 必须参数 --current-user

--current-db

  1. 查询数据库中当前使用的数据库
  2. 用法:python sqlmap.py 必须参数 --current-db

--hostname

  1. 查询数据库中当前的主机名
  2. 用法:python sqlmap.py 必须参数 --hostname

--is-dba

  1. 检测当前的数据库用户是否为DBA(即数据库管理员)
  2. 用法:python sqlmap.py 必须参数 --is-dba

--users

  1. 枚举所有用户
  2. 用法:python sqlmap.py 必须参数 --users

--passwords

  1. 枚举所有用户名密码的哈希
  2. 用法:python sqlmap.py 必须参数 --passwords

--privileges

  1. 枚举所有数据库用户的权限
  2. 用法:python sqlmap.py 必须参数 --privileges
  3. 枚举某一数据库用户权限,用法:python sqlmap.py 必须参数 --privileges -U username
  4. 枚举数据库当前用户权限,用法:python sqlmap.py 必须参数 --privileges -CU
  5. 如果是MSSQL,则只会列出用户是否为管理员而不是用户的具体权限

--roles

  1. 枚举数据库中的用户角色
  2. 只要在Oracle数据库中可以用,其余数据库返回--privileges的数据
  3. 用法:python sqlmap.py 必须参数 --roles
  4. 其余用法同--privileges

--dbs

  1. 枚举服务器中所有的数据库
  2. 用法:python sqlmap.py 必须参数 --dbs

--tables

  1. 枚举数据库中的所有表名
  2. 用法:python sqlmap.py 必须参数 --tables

--columns

  1. 枚举数据库中的所有列名
  2. 用法:python sqlmap.py 必须参数 --columns

--schema

  1. 查询数据库架构,即每个列的类型,如:id是int类型,name是varchar(255)类型
  2. 用法:python sqlmap.py 必须参数 --schema

--count

  1. 枚举每个表所包含的数据量
  2. 用法:python sqlmap.py 必须参数 --count

--dump

  1. 查询指定范围的全部数据
  2. 用法:python sqlmap.py 必须参数 --dump 其他参数
  3. 该处的其他参数通常指-D-T-C-X-U--start--stopfirst--last--pivot-column--where,这些参数均在后面有相应介绍

--dump-all

  1. 枚举数据库中全部数据
  2. 用法:python sqlmap.py 必须参数 --dump-all

--search

  1. 搜索数据库、表、列的名称
  2. 用法:python sqlmap.py 必须参数 --search 其他参数
  3. 其他参数为-C-T-D,这些参数均在后面有相应介绍

--comments

  1. 搜索数据库的备份
  2. 用法:python sqlmap.py 必须参数 --comments

-D

  1. 指定枚举的数据库名
  2. 用法:python sqlmap.py 必须参数 -D 数据库名

-T

  1. 指定枚举的表名
  2. 用法:pyton sqlmap.py 必须参数 -T 表名
  3. 通常情况下需先指定数据库

-C

  1. 指定枚举的列名
  2. 用法:python sqlmap.py 必须参数 -C 列名
  3. 通常情况下需先指定数据库和表名

-X

  1. 不枚举数据库中的某一列
  2. 用法:python sqlmap.py 必须参数 -X 标识符
  3. 如图:

    • 未使用-X
      未使用-X
    • 使用-X
      使用-X

-U

  1. 指定用户名,常和--privileges一起使用
  2. 用法:python sqlmap.py 必须参数 --privileges -U 指定的用户名
  3. 其中,使用-CU表示当前账户

--exclude-sysdbs

  1. -X类似,此为排除某个数据库
  2. 用法:python sqlmap.py 必须参数 --exclude-sysdbs 数据库名

--pivot-colum

  1. 做数据透视用的,估计平时也很少用的上。因为可能自动选择的列不适合做数据透视,所以可以使用该参数强制指定一列。
  2. 用的:python sqlmap.py 必须参数 --pivot-cloum

--where

  1. 使用-dump下载数据时,可以使用该参数限制条件
  2. 用法:python sqlmap.py 必须参数 --where=限制条件

--start

  1. 设置一个起始位置,在下载表时,从第几行开始
  2. 用法:python sqlmap.py 必须参数 --start=3

-stop

  1. 设置一个结束位置,作用同上
  2. 用法:python sqlmap.py 必须参数 --stop=4

--first--last

  1. 此参数仅使用SQL盲注
  2. 根据官方的说法时可以将某一列的字符转储到另一列,但是根据我的尝试并没有成功。
  3. 用法:python sqlmap.py 必须参数 --first=2 --last=4

--sql-query

  1. 执行SQL语句
  2. 用法:python sqlmap.py 必须参数 --sql-query=SQL语句

--sql-shell

  1. 执行SQL的shell
  2. 用法:python sqlmap.py 必须参数 --sql-shell=shell语句

--sql-file

  1. 从给定的文件中读取SQL语句来执行
  2. 用法:python sqlmap.py 必须参数 --sql-file=文件目录

暴力破解参数

下列选项可以用于暴力破解

--common-tables

  1. 检查记录信息的公共表。
  2. 用法:python sqlmap.py 必须参数 --common-tables
  3. 在以下这些情况中,不能使用-tables检索数据库的列名,需要使用该参数:

    • MySQL版本小于5.0
    • 数据库是Access
    • 会话用户对数据库的系统表没有读取权限

--common-columns

  1. 检查公共的列。
  2. 用法:pyhton sqlmap.py 必须参数 --common-columns
  3. 在以下这些情况中,不能使用-columns检索数据库的列名,需要使用该参数:

    • MySQL版本小于5.0
    • 数据库是Access
    • 会话用户对数据库的系统表没有读取权限

自定义函数注入参数

这些选项可以创建自定义的函数用来注入

--udf-inject

  1. 通过编译MySQL、PostgreSQL的共享库、DLL和共享对象来注入自定义函数(UDFs)
  2. 用法:python sqlmap.py 必须参数 --udf-inject=文件路径
  3. 用法:python sqlmap.py 必须参数 --shared-lib=文件路径
  4. 仅适用于MySQL和PostgreSQL
  5. 详情参见链接

文件系统访问参数

这些选项可用于访问数据库系统中的文件

--file-read

  1. 从数据库系统中读取文件
  2. 用法:python sqlmap.py 必须参数 --file-read=文件路径

--file-write

  1. 对数据库系统写入文件
  2. 用法:python sqlmap.py 必须参数 --file-write=文件路径

--file-dest

  1. 写入文件到数据库系统的绝对路径
  2. 用法:python sqlmap.py 必须参数 --file-dest=文件路径

操作系统访问参数

这些选项可以用于访问后端数据库管理的操作系统

--os-cmd

  1. 执行系统命令
  2. 用法:python sqlmap.pu 必须参数 --os-cmd=命令

--os-shell

  1. 创建一个shell
  2. 用法:python sqlmap.py 必须参数 --os-shell

--os-pwn

  1. 可以用来反弹msf下的shell和vnc
  2. 用法:python sqlmap.py 必须参数 --os-pwn

--os-smbrelay

  1. 获取OOB shell,反弹msf下的shell和vnc
  2. 用法:python sqlmap.py 必须参数 --os-smbrelay

--os-bof

  1. 利用缓冲区漏洞
  2. 用法:python sqlmap.py 必须参数 --os-bof

--priv-esc

  1. 自动提权
  2. 用法:python sqlmap.py 必须参数 --priv-esc

--msf-path

  1. 输入本地的msf路径
  2. 用法:python sqlmap.py 必须参数 --msf-path=本地msf路径

--tmp-path

  1. 输入远程临时文件目录的绝对路径。
  2. 用法:python sqlmap.py 必须参数 --tmp-path=临时文件绝对路径

Windows注册表访问参数

这些选项可以用于访问使用Windows系统的数据库中Windows注册表
前三个参数必须选择一个,后四个参数任选

--reg-read

  1. 读取Windows注册表
  2. 用法:python sqlmap.py 必须参数 --reg-read

reg-add

  1. 写入一个Windows注册表
  2. 用法:python sqlmap.py 必须参数 --reg-add

--reg-del

  1. 删除一个Windows注册表
  2. 用法:python sqlmap.py 必须参数 --reg-del

--reg-key

  1. 表示Windows注册表的key值
  2. 用法:python sqlmap.py 必须参数 前三个参数 --reg-key=key值

--reg-value

  1. 表示注册表值
  2. 用法:python sqlmap.py 必须参数 前三个参数 --reg-value=值

--reg-data

  1. 表示注册表数据
  2. 用法:python sqlmap.py 必须参数 前三个参数 --reg-data=数据

--reg-type

  1. 表示注册表类型
  2. 用法:python sqlmap.py 必须参数 前三个参数 --reg-type=类型

其他参数1

这些选项可以用于设置一些常规工作参数

-s

  1. 从一个.sqlite文件中加载session
  2. 用法:python sqlmap.py 必须参数 -s SESSION文件

-t

  1. 将所有HTTP流量记录到文本文件中
  2. 用法:python sqlmap.py 必须参数 -t 文本文件保存位置

--answers

  1. 设置预设答案
  2. 用法:python sqlmap.py 必须参数 --answers=答案
  3. 在执行sqlmap可能会多次询问选择,所以可以提前设置

--base64

  1. 设置包含base64数据编码的数据
  2. 用法:python sqlmap.py 必须参数 --base64=需要base64编码的HTTP参数

--batch

  1. 永远使用默认设置,不询问用户
  2. 用法:python sqlmap.py 必须参数 --batch

--binary-fields

  1. 如果表中具有储存的二进制值的列,可以使用该参数进行正确的处理,所有的这些字段将被检索,并用十六进制显示。
  2. 用法:python sqlmap.py 必须参数 --binary-fields=使用二进制的列

--check-internet

  1. 在进行注入前,首先检测互联网是否可以访问
  2. 用法:python sqlmap.py 必须参数 --check-internet

--crawl

  1. 从目标网址开始抓取网站的深度
  2. 用法:python sqlmap.py 必须参数 --crawl=深度层数

--crawl-exclude

  1. 使用正则表达式排除不需要爬取的网页
  2. 用法:python sqlmap.py 必须参数 --crawl-exclude=正则表达式

--csv-del

  1. 设置CSV格式的分隔符,默认使用逗号作为分隔符
  2. 用法:python sqlmap.py 必须参数 --csv-del=","

--charset

  1. 设置盲注的字符集
  2. 用法:python sqlmap.py 必须参数 --charset=字符集
  3. 在基于布尔和时间的盲注SQL注入中,用户可以强制使用自定义字符集来加快数据检索过程。

--dump-format

  1. 设置转储数据格式,默认为CSV,可选HTML、SQLite
  2. 用法:python sqlmap.py 必须参数 --dump-format=html或者sqlite或者csv

--encoding

  1. 设置编码,如:GBK或者utf-8
  2. 用法:python sqlmap.py 必须参数 --encoding=GBK

--eta

  1. 显示每个输出的估计时间
  2. 用法:python sqlmap.py 必须参数 --eta

--flush-session

  1. 刷新当前目标的session
  2. 用法:pyhton sqlmap.py 必须参数 --flush-session

--forms

  1. 解析在目标URL中存在的表单,通常这些表单在HTML中都是用<form><input>标记的
  2. 用法:python sqlmap.py 必须参数 --forms

--fresh-queries

  1. 忽略储存在session中的查询结果,通过该参数,可以保持session保持不变。
  2. 用法:python sqlmap.py 必须参数 --fresh-queries

--har

  1. 将所有的HTTP流量记录到一个har文件中
  2. 用法:python sqlmap.py 必须参数 --har

--hex

  1. 在数据检索期间使用十六进制转换
  2. 用法:python sqlmap.py 必须参数 --hex

--output-dir

  1. 自定义输出目录
  2. 用法:pyhton sqlmap.py 必须参数 --output-dir=输出目录路径

--parse-errors

  1. 解析错误解析,并显示来自数据库的错误消息
  2. 用法:python sqlmap.py 必须参数 --parse-errors

--preprocess

  1. 使用给定的脚本对请求数据进行预处理
  2. 用法:python sqlmap.py 必须参数 --preprocess=脚本路径
  3. 使用该参数可以在发送请求前对请求数据使用自定义脚本,例如将参数附加到POST请求中。

--postprocess

  1. 使用给定的脚本对响应数据进行预处理
  2. 用法:python sqlmap.py 必须参数 --postprocess=脚本路径
  3. 使用该参数可以在收到响应后对响应数据使用自定义脚本,例如将所有小写字符转换为大写

--repair

  1. 修复具有未知字符标记的项
  2. 用法:python sqlmap.py 必须参数 --repair

--save

  1. 保存现在的选项到ini配置文件中
  2. 用法:pyhton sqlmap.py 必须参数 --save=配置文件.conf
  3. 可以使用-c来读取这些ini配置文件

--scope

  1. 使用正则表达式从burp的日志中过滤所需要的主机
  2. 用法:python sqlmap.py 必须参数 --scope="正则表达式"
  3. 例如:

    • python sqlmap.py -l burp.log --scope="(www)?\.target\.(com|net|org)"

--test-filter

  1. 通过某些有效载荷或标题进行测试
  2. 用法:python sqlmap.py 必须参数 --test-filter=有效载荷或标题
  3. 使用包含某个关键词的payload进行检测

--test-skip

  1. 跳过某些有效载荷或标题进行测试
  2. 用法:python sqlmap.py 必须参数 --test-skip=想跳过的有效载荷或标题

--update

  1. 升级SQLmap
  2. 用法:python sqlmap.py --update

其他参数2

-z

  1. 助记符,只要能确定唯一的参数,那么就可以缩写参数
  2. 用法:python sqlmap.py 必须参数 -z "缩写参数"
  3. 例子:python sqlmap.py -z "bat,randoma,ign,tec=BEU" -u "www.target.com/vuln.php?id=\1",其中,bat--batchrandomarandom-agentignignore-proxytec-BEU--technique=BEU

--alert

  1. 当发现SQL注入后,运行本机的CMD命令
  2. 用法:python sqlmap.py 必须参数 --alert "命令"
  3. 只在Linux环境下成功过

--beep

  1. 当发现SQL注入后,蜂鸣器报警
  2. 用法:python sqlmap.py 必须参数 --beep

--cleanup

  1. 从SQLmap创建的临时表和自定义函数
  2. 常用于测试结束后
  3. 用法:python sqlmap.py 必须参数 --cleanup

--dependencies

  1. 检查缺少的SQLmap依赖的第三方库
  2. 常用于检测SQLmap必须的第三方依赖python库
  3. 用法:python sqlmap.py --dependencies

--disable-coloring

  1. 关闭彩色输出
  2. 用法:python sqlmap.py --disable-coloring

--gpage

  1. 指定来自某一页码的Google dork结果,常与-g一起使用
  2. 用法:python sqlmap.py -g 参数 --gpage=12

--identify-waf

  1. 识别WAF、IPS、IDS等
  2. 用法:python sqlmap.py 必须参数 --identity-waf

--list-tampers

  1. 列出所有本地绕WAF的规则
  2. 用法:python sqlmap.py --list-tampers

--mobile

  1. 模拟智能手机的UA
  2. 用法:python sqlmap.py 必须参数 --mobile

--offline

  1. 在脱机模式下运行,只在当前或以前的数据,不会对服务端进行连接
  2. 用法:python sqlmap.py 必须参数 --offline

--purge

  1. 安全删除SQLmap数据目录中的所有内容,即删除本地SQLmap测试的所有数据和历史记录
  2. 用法:python sqlmap.py --purge
  3. 安全删除意味着对该目录进行随机数据覆盖,破坏数据,防止恢复

--skip-waf

  1. 跳过WAF、IPS、IDS的扫描检测
  2. 用法:pyhton sqlmap.py 必须参数 --skip-waf

--smart

  1. 如果只是为了找出批量检测中的SQL注入,使用该参数进行启发式扫描,只有让数据库报错的参数才会进一步测试,其余跳过
  2. 常与-m一起使用
  3. 用法:python sqlmap.py -m 参数 --smart

--sqlmap-shell

  1. 使用该参数,可以打开一个交互式的SQLmap SHELL,支持历史记录
  2. 用法:python sqlmap.py --sqlmap-shell

--tmp-dir

  1. 更改本地临时文件储存目录
  2. 用法:python sqlmap.py --tmp-dir=本地目录

--web-root

  1. 指定Web服务器的文档根目录
  2. 用法:python sqlmap.py 必须参数 --web-root="根目录绝对路径"

--wizard

  1. 面向初学者的简单向导界面
  2. 用法:python sqlmap.py --wizard
  3. 该参数使用简单的工作流程,问题尽可能的少,只要输入了URL,那么在工作流结束时,也会设置一个正确的SQLmap运行环境

  1. 2
最后编辑于: 2020 年 11 月 19 日
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码