日期: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 额外的请求头,使用 \n 来分割 (e.g. "Accept-Language: fr\nETag: 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/

【工具】sqlmap 中文手册 使用教程的更多相关文章

  1. sqlmap中文手册

    Sqlmap中文手册  -Darren制作 零.前言 Sqlmap是十分著名的.自动化的SQL注入工具.为了较为系统地学习Sqlmap,我决定翻译一遍Sqlmap的用户手册,于是便有了此文.由于我英语 ...

  2. pgpool-II 4.3 中文手册 - 入门教程

    本章解释了如何开始使用 Pgpool-II. 安装 在本节中,我们假设您已经安装了 Pgpool-II 与 PostgreSQL 集群. 你的第一个复制(Replication) 在本节中,我们将解释 ...

  3. Object Pascal中文手册 经典教程

    Object Pascal 参考手册 (Ver 0.1)ezdelphi@hotmail.com OverviewOverview(概述)Using object pascal(使用 object p ...

  4. 自动化SQL注入工具 sqlmap 使用手册

    0x00 sqlmap介绍 什么是sqlmap? sqlmap是一个开源的渗透测试工具,它自动化了检测和利用SQL注入缺陷 以及接管数据库服务器的过程.它配备了一个强大的检测引擎 ,以及终极渗透测试仪 ...

  5. LVGL|lvgl中文手册(lvgl中文文档教程)

    lvgl官方的教程是英文的,这个是我在做项目时根据lvgl官方文档做出来的lvgl中文文档(持续更新维护),不仅仅只是生硬照搬lvgl官方文档的翻译,同时总结了我们在实际开发中遇到的各种细节,让这个文 ...

  6. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数·简明中文手册 总览

    <zw版·Halcon-delphi系列原创教程> Halcon分类函数·简明中文手册 总览 Halcon函数库非常庞大,光HALCONXLib_TLB.pas文件,源码就要7w多行,但核 ...

  7. Python消息队列工具 Python-rq 中文教程

    原创文章,作者:Damon付,如若转载,请注明出处:<Python消息队列工具 Python-rq 中文教程>http://www.tiangr.com/python-xiao-xi-du ...

  8. phpredis 中文手册和redis 教程

    phpredis 中文手册  :   http://www.cnblogs.com/zcy_soft/archive/2012/09/21/2697006.html 手册: http://www.cn ...

  9. Flask 中文手册 0.10 文档

    Flask 中文手册 0.10 文档 欢迎使用 Flask 欢迎阅读 Flask 文档. 本文档分为几个部分.我推荐您先从 安装 开始,之后再浏览 快速入门 章节. 教程 比快速入门更详细地介绍了如何 ...

随机推荐

  1. libcurl 上传文件,不管文件什么格式 libcurl开发指南

    libcurl 上传文件,不管文件什么格式 libcurl开发指南 上传文件 https://curl.haxx.se/download.html curl命令参数很多,这里只列出我曾经用过.特别是在 ...

  2. python_生成器

    生成器: # 生成器函数(内部是否包含yield) def func(): print('F1') yield 1 print('F2') yield 2 print('F3') yield 100 ...

  3. 201812-4 数据中心(kruskal)

    考场上的时候被题目完全蒙住了,当时状态也不好,前几次考试每次考试当天就头晕感冒流鼻涕 好的,以上都是借口,自己没有好好复习才是真的... 题目: 好的,以上题目简述就是:给你一个无向连通图,求它的最小 ...

  4. [Functional Programming] Using ComposeK for both get State and modify State

    We have State like this: const state = { cards: [ { id: "green-square", color: "green ...

  5. Windows开发:窗口最大化问题

    MoveWindow(0, 0, 1920, 1080)和SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE, 0)的区别 MoveWindow(, , , ); 我们可以分 ...

  6. 客户端xml

    package lct.conference.common; import java.io.IOException;import java.io.PrintWriter;import java.net ...

  7. centos安装JDK、Tomcat、mysql

    1.下载 jdk-8u131-linux-x64.tar.gz 下载地址: https://pan.baidu.com/s/1o8LW9eE 密码: miva 2.下载 apache-tomcat-8 ...

  8. leetcode解题报告(3):Search in Rotated Sorted Array

    描述 Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 m ...

  9. unix/linux 进程间文件锁

    转自 http://www.cnblogs.com/hjslovewcl/archive/2011/03/14/2314333.html 有三种不同的文件锁,这三种都是“咨询性”的,也就是说它们依靠程 ...

  10. scrapy框架之shell

    scrapy shell scrapy shell是一个交互式shell,您可以在其中快速调试 scrape 代码,而不必运行spider.它本来是用来测试数据提取代码的,但实际上您可以使用它来测试任 ...