【工具】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 额外的请求头,使用 \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 中文手册 使用教程的更多相关文章
- sqlmap中文手册
Sqlmap中文手册 -Darren制作 零.前言 Sqlmap是十分著名的.自动化的SQL注入工具.为了较为系统地学习Sqlmap,我决定翻译一遍Sqlmap的用户手册,于是便有了此文.由于我英语 ...
- pgpool-II 4.3 中文手册 - 入门教程
本章解释了如何开始使用 Pgpool-II. 安装 在本节中,我们假设您已经安装了 Pgpool-II 与 PostgreSQL 集群. 你的第一个复制(Replication) 在本节中,我们将解释 ...
- Object Pascal中文手册 经典教程
Object Pascal 参考手册 (Ver 0.1)ezdelphi@hotmail.com OverviewOverview(概述)Using object pascal(使用 object p ...
- 自动化SQL注入工具 sqlmap 使用手册
0x00 sqlmap介绍 什么是sqlmap? sqlmap是一个开源的渗透测试工具,它自动化了检测和利用SQL注入缺陷 以及接管数据库服务器的过程.它配备了一个强大的检测引擎 ,以及终极渗透测试仪 ...
- LVGL|lvgl中文手册(lvgl中文文档教程)
lvgl官方的教程是英文的,这个是我在做项目时根据lvgl官方文档做出来的lvgl中文文档(持续更新维护),不仅仅只是生硬照搬lvgl官方文档的翻译,同时总结了我们在实际开发中遇到的各种细节,让这个文 ...
- 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数·简明中文手册 总览
<zw版·Halcon-delphi系列原创教程> Halcon分类函数·简明中文手册 总览 Halcon函数库非常庞大,光HALCONXLib_TLB.pas文件,源码就要7w多行,但核 ...
- Python消息队列工具 Python-rq 中文教程
原创文章,作者:Damon付,如若转载,请注明出处:<Python消息队列工具 Python-rq 中文教程>http://www.tiangr.com/python-xiao-xi-du ...
- phpredis 中文手册和redis 教程
phpredis 中文手册 : http://www.cnblogs.com/zcy_soft/archive/2012/09/21/2697006.html 手册: http://www.cn ...
- Flask 中文手册 0.10 文档
Flask 中文手册 0.10 文档 欢迎使用 Flask 欢迎阅读 Flask 文档. 本文档分为几个部分.我推荐您先从 安装 开始,之后再浏览 快速入门 章节. 教程 比快速入门更详细地介绍了如何 ...
随机推荐
- H265编码等级以及图像的基础知识
1. H265编码等级 H264编码profile & level控制 .H265编码初探 H265 profile H265 Profile & Level & Tier 介 ...
- 用js刷剑指offer(变态跳台阶)
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 牛客网链接 思路 假设青蛙跳上一个n级的台阶总共有f(n)种跳法. 现在青蛙从第n个台阶 ...
- TCP、Http和Socket 优劣比较
转自:http://www.cnblogs.com/webwlsong/p/3198712.html 了解HTTP和Socket之前先对网络7层协议有个了解: 7 应用层6 表示层5 会话层 4 传输 ...
- c++初步认识
经过漫长的C学习终于踏入C++的知识库当中了,还是保持以前的习惯会一步步通过写博客的形式来记录点滴学习记录,这种学习方式是相当慢的,但是对我来说是最踏实的,不浮躁,一步一个脚印.C++是一门啥语言呢, ...
- linux getpid _getpid()
getpid是一种函数,功能是取得进程识别码,许多程序利用取到的此值来建立临时文件,以避免临时文件相同带来的问题. 函数功能:取得进程识别码 相关函数:fork,kill,getpid 头文件:旧版本 ...
- resultSet.getMetaData() 获得表结构
1.得到查询结果,一个数据集 rs = stat.executeQuery("select * from " + table_name + " limit " ...
- ip_srcroute函数
当响应某个分组时,I C M P和标准的运输层协议必须把分组带的任意源路由逆转.逆转源路由是通过i p _ s r c r o u t e保存的路由构造的. 7 7 7 - 7 8 3 i p _ s ...
- 02C#操作rabbitmq
以前用过memcacheq.msmq.redis的list做队列,在用memcacheq的时候,还是在linux下,当然这个不是我安装的,我只是用c#操作而已,从那以后对队列处理并发能力有了新的认识, ...
- 「Django」Django内置email发送邮件
Django内置email发送邮件 1.首先在settings.py文件设置相关参数 STATIC_URL = '/static/' # 设置邮件域名 EMAIL_HOST = 'smtp.163.c ...
- MVC路由规则进一步了解
本周由于工作需要,接触了PetaPoco(一个小型的ORM-框架)和ExtJS,这个项目框架是别人写好的,用的是MVC,我写的MVC程序一般控制器和视图都是在一个类库下面的,但是作者是把MVC中的控制 ...