zoukankan      html  css  js  c++  java
  • 【工具】sqlmap 中文手册 使用教程


    日期:2019-07-28 09:27:27
    更新:
    作者:Bay0net
    介绍:自己翻译了一下,做个备忘。


    0x01、 基本信息

    官网

    sqlmap: automatic SQL injection and database takeover tool

    注入类型

    • 基于布尔的盲注:即可以根据返回页面判断条件真假的注入;

    • 基于时间的盲注:即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断;

    • 基于报错注入:即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中;

    • 联合查询注入:可以使用union的情况下的注入;

    • 堆查询注入:可以同时执行多条语句的执行时的注入。

    支持的数据库

    MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB
    

    0x02、使用方法

    基本流程

    # 爆所有数据库
    sqlmap -r 1.txt --dbs
    
    # 爆表名
    sqlmap -r 1.txt -D dvwa --tables
    
    # 爆字段名
    sqlmap -r 1.txt -D dvwa -T users --columns
    
    # 爆字段内容
    sqlmap -r 1.txt -D dvwa -T users -C user,password --dump
    

    Target

    -d      # 直接连接数据库
    -u      # 目标 URL
    -l      # 从 Burp 或者 WebScarab 加载一个日志文件
    -x      # 从远程网站地图(sitemap).xml 文件加载目标
    -r      # 从文件中加载目标【重要】
    -g      # 从 google 结果中加载目标
    -c      # 从配置文件(.ini)中加载目标
    

    Request

    指定如何连接目标的 URL

    --method=METHOD     定制 http 方法 (e.g. PUT)
    --data=DATA         通过 POST 发送数据 (e.g. "id=1")
    --param-del=PARA..  用特殊字符拆分字符串 (e.g. &)
    --cookie=COOKIE     定制 cookie (e.g. "PHPSESSID=a8d127e..")
    --cookie-del=COO..  定制分割 cookie 的字符 (e.g. ;)
    --drop-set-cookie   忽略返回包中的 Set-Cookie
    --user-agent=AGENT  定制 User-Agent 
    --random-agent      使用随机的 UA
    --host=HOST         设置 host 的值
    --referer=REFERER   设置 referer 的值
    -H HEADER, --hea..  额外的请求头 (e.g. "X-Forwarded-For: 127.0.0.1")
    --headers=HEADERS   额外的请求头,使用 
     来分割 (e.g. "Accept-Language: fr
    ETag: 123")
    
    --auth-type=AUTH..  身份认证类型 (Basic, Digest, NTLM or PKI)
    --auth-cred=AUTH..  HTTP 身份凭证 (name:password)
    --auth-file=AUTH..  从文件中载入 PEM 证书文件
    
    --ignore-code=IG..  忽略状态码 (e.g. 401)
    --ignore-proxy      忽略系统代理
    --ignore-redirects  忽略重定向
    --ignore-timeouts   忽略超时的链接
    
    --proxy=PROXY       设置一个代理
    
    --delay=DELAY       设置两个 HTTP 请求之间的延迟
    --timeout=TIMEOUT   设置超时时间 (default 30)
    --retries=RETRIES   设置超时重试时间 (default 3)
    --randomize=RPARAM  随机改变给定的参数的值
    
    --safe-url=SAFEURL  在测试的时候,频繁的访问某 URL(伪装是真人)
    --safe-post=SAFE..  在测试的时候,频繁的 POST 数据
    --safe-req=SAFER..  从文件中加载一个安全的 http 请求
    --safe-freq=SAFE..  在两次请求中间,加入一个访问请求
    --skip-urlencode    忽略 URL 编码
    
    --csrf-token=CSR..  保留 anti-CSRF token
    --csrf-url=CSRFURL  访问一个 URL,来获取 anti-CSRF token
    --force-ssl         强制使用 SSL/HTTPS
    --chunked           分块传输 POST 的请求
    --hpp               使用 http 参数污染
    

    Optimization

    有俩不知道咋做到的,有时间抓包看看。。

    -o                  打开所有优化开关
    --predict-output    预测常见的查询输出??
    --keep-alive        使用一个长连接,不中断
    --null-connection   在不使用实体 HTTP 请求的情况下获取页面长度??
    --threads=THREADS   最大线程数 (default 1)
    

    Injection

    -p TESTPARAMETER    指定测试的参数
    --skip=SKIP         跳过指定的参数
    --skip-static       如果参数是静态的,那么就跳过
    
    --dbms=DBMS         指定后端的数据库类型
    --dbms-cred=DBMS..  指定数据库的账号密码 (user:password)
    
    --os=OS             指定后端的操作系统
    
    --no-cast           关闭 payload casting 机制
    --no-escape         关闭 string escaping 机制
    --prefix=PREFIX     在 payload 上加个前缀
    --suffix=SUFFIX     在 payload 上加个后缀
    --tamper=TAMPER     使用 tamper
    

    Detection

    --level=LEVEL       测试级别:2 检测 cookie,3 检测 User-Agent/Referer (1-5, default 1)
    --risk=RISK         风险级别:2 会加上大量时间盲注测试,3 会加上 OR 类型的布尔盲注 (1-3, default 1)
    

    Techniques

    --technique=TECH..  注入类型 (default "BEUSTQ",可改成 EU 试试)
    --time-sec=TIMESEC  设置时间盲注延迟的时间 (default 5)
    --union-cols=UCOLS  指定 union 查询的列数
    --dns-domain=DNS..  Domain name used for DNS exfiltration attack
    
    B:布尔型盲注
    E:报错盲注
    U:联合查询注入
    S:堆查询注入
    T:时间盲注
    Q:内联查询注入
    

    Enumeration

    这个基本都明白

    -a, --all           Retrieve everything
    -b, --banner        Retrieve DBMS banner
    --current-user      Retrieve DBMS current user
    --current-db        Retrieve DBMS current database
    --hostname          Retrieve DBMS server hostname
    --is-dba            Detect if the DBMS current user is DBA
    
    --users             Enumerate DBMS users
    --passwords         Enumerate DBMS users password hashes
    --privileges        Enumerate DBMS users privileges
    --roles             Enumerate DBMS users roles
    --dbs               Enumerate DBMS databases
    --tables            Enumerate DBMS database tables
    --columns           Enumerate DBMS database table columns
    --schema            Enumerate DBMS schema
    
    --count             Retrieve number of entries for table(s)
    --dump              Dump DBMS database table entries
    --dump-all          Dump all DBMS databases tables entries
    
    --search            Search column(s), table(s) and/or database name(s)
    --comments          Check for DBMS comments during enumeration
    --statements        Retrieve SQL statements being run on DBMS
    
    -D DB               DBMS database to enumerate
    -T TBL              DBMS database table(s) to enumerate
    -C COL              DBMS database table column(s) to enumerate
    -X EXCLUDE          DBMS database identifier(s) to not enumerate
    -U USER             DBMS user to enumerate
    

    Brute force

    以下情况,无法直接读取表名

    • mysql 版本 < 5.0,没有
    • Access 的数据库,系统表 MSysObjects 不可读
    • 其他权限问题

    这时候就需要采用字典爆破了。

    --common-tables     爆破表名
    --common-columns    爆列名
    --common-files      爆文件
    

    File system access

    --file-read=FILE..  读文件
    --file-write=FIL..  写文件
    

    tamper

    -v 参数

    0:只显示Python的回溯,错误和关键消息。
    1:显示信息和警告消息。
    2:显示调试消息。
    3:有效载荷注入。
    4:显示HTTP请求。
    5:显示HTTP响应头。
    6:显示HTTP响应页面的内容

    0x03、文件相关

    修改最大线程数

    cd /usr/local/Cellar/sqlmap/1.1.7/libexec/lib/core
    open settings.py
    

    然后查找 MAX_NUMBER_OF_THREADS,修改成自己想要的值即可。

    目录

    # tamper 脚本位置
    /Users/v/sqlmap/tamper
    
    # random-agent 
    /Users/v/sqlmap/data/txt/user-agents.txt
    
    # 扫描过的网站
    /Users/v/.sqlmap/output/
    
  • 相关阅读:
    spring+hibernate常见异常集合
    Java报错原因汇总
    java常见异常集锦
    连接池 druid(阿里巴巴的框架)
    企业支付宝账号开发接口实现
    Maven使用常见问题整理
    MySQL的分页
    Struts2中通配符的使用
    Centos下安装mysql 总结
    将linux用在开发环境中
  • 原文地址:https://www.cnblogs.com/v1vvwv/p/Sqlmap-Chinese-Usage.html
Copyright © 2011-2022 走看看