日期: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. 各位大佬Python的第一部分道基础题已经整理好了,希望大家面试的时候能用的上。

    Python的第一部分道基础题,希望大家面试的时候能用的上. 1.为什么学习Python? Python是目前市面上,我个人认为是最简洁.最优雅.最有前途.最全能的编程语言,没有之一. 2.通过什么途 ...

  2. 前端笔记-html

    前端笔记html 前端三大利器,html(本源),css(着装),js(动作) html 学习html就是学习一套规则能够被浏览器识别,在页面中展示,一个页面只能运行一个html 标签 <> ...

  3. 那些吓人的 Linux 命令

    本文转载于其它网站,原作者如有问题,请您及时联系我,及时删除! 哪些Linux命令会让人联想到妖魔鬼怪?不妨好好瞧一瞧! 每年一度的万圣节马上就要到来,是时候稍微关注一下Linux那吓人的一面了.哪些 ...

  4. LeetCode刷题--有效的括号(简单)

    题目描述 给定一个只包括 ' ( ' , ' )  ',  ' { ' , ' } ' , ' [ ' , ' ] ' 的字符串,判断字符串是否有效.有效字符串需满足: 左括号必须用相同类型的右括号闭 ...

  5. Ellipsis对象

    Ellipsis对象. 写作 : ‘…’ 中文解释:省略 该对象bool测试是为真 用途: 1.用来省略代码,作用类似于pass的一种替代方案,这是python的’TBD’(未确定内容). def f ...

  6. 了解 Spring Boot

    Spring Boot是什么,解决哪些问题? SpringBoot是伴随着Spring4.0诞生的: 从字面理解,Boot是引导的意思,因此SpringBoot帮助开发者快速搭建Spring框架: S ...

  7. Codeforces Round #585 (Div. 2) D. Ticket Game

    链接: https://codeforces.com/contest/1215/problem/D 题意: Monocarp and Bicarp live in Berland, where eve ...

  8. How to find First Non-Repeated Character from String

    You need to write a function, which will accept a String and return first non-repeated character, fo ...

  9. python自动华 (十一)

    Python自动化 [第十一篇]:Python进阶-RabbitMQ队列/Memcached/Redis  本节内容: RabbitMQ队列 Memcached Redis 1.  RabbitMQ ...

  10. HDU 6134 Battlestation Operational | 2017 Multi-University Training Contest 8

    破结论没听说过,上式推导到第三步的时候有了O(nlogn) 的做法(枚举倍数+1最后前缀和),并且这种做法可以直接应用到向上取整的计算中,详见forever97 但由于d(n)是积性函数,故可O(n) ...