首页 > 数据库 >Sqlmap命令使用方法总结----适合网络安全小白

Sqlmap命令使用方法总结----适合网络安全小白

时间:2024-10-18 22:52:45浏览次数:3  
标签:Sqlmap 网络安全 DBMS HTTP .. -- 指定 ---- sqlmap

在网上找了很多教程,都是零零散散的,找到了两位位前辈的博客,应该是翻译的官方文档,感谢前辈们做出的贡献.希望能够帮助刚学网络安全的小白们

本文参考:漏洞人生sqlmap用户手册中文版

目录

  • Sqlmap使用方法总结
    • sqlmap简介
    • 常用语句
    • sqlmap详细命令
      • 用法
      • 选项
      • 目标
      • 请求
      • 优化
      • 注入
      • 检测
      • 技术
      • 指纹识别
      • 枚举
      • 暴力破解
      • 用户自定义函数注入
      • 访问文件系统
      • 访问操作系统
      • 访问 Windows 注册表:
      • 通用选项:
      • 杂项

sqlmap简介

sqlmap支持五种不同的注入模式:

  • 基于布尔的盲注
  • 基于时间的盲注
  • 基于报错注入
  • 联合查询注入
  • 堆叠注入

sqlmap支持九种不同的数据库:

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

常用语句

  • 自动检测

sqlmap -u http:/xxxxxx.xxx -batch

  • 指定参数

sqlmap -u http:/xxxxxx.xxx/?id=x&param=x -p id

  • 指定数据库类型

sqlmap -u http:/xxxxxx.xxx –dbms mysql

  • 从文件读取http请求报文

sqlmap -r 1.txt -batch

  • 设置cookie

sqlmap -u http:/xxxxxx.xxx --cookie="JSESSION=asd"

  • 查询数据库

sqlmap -u http:/xxxxxx.xxx --dbs

  • 查询表

sqlmap -u http:/xxxxxx.xxx -D 数据库名 --tables

  • 查字段名

sqlmap -u http:/xxxxxx.xxx -D 数据库名 -T 表名 --columns

  • 爆数据

sqlmap -u http:/xxxxxx.xxx -D 数据库名 -T 表名 -C "字段名1,字段名2"--dump

  • 在数据库中搜索字段 / 表 / 数据库名

sqlmap -u http:/xxxxxx.xxx --search -C/T/D admin,password

  • 写入文件
    sqlmap -u http://xxx.xxx -–file-dest "要写入的文件在本地的路径" –file-write "目标路径"
  • 调用shell

sqlmap -u http://xxx.xxx --os-shell

  • tip: 是否跟随302跳转

当注入页面错误的时候,自动跳转到另一个页面的时候需要跟随302,
当注入错误的时候,先报错再跳转的时候,不需要跟随302。
目的是要追踪到错误信息。

sqlmap详细命令

用法

python sqlmap.py [选项]

选项

-h, --help            显示基本帮助信息并退出
-hh                   显示高级帮助信息并退出
--version             显示程序版本信息并退出
-v VERBOSE            输出信息详细程度级别:0-6(默认为 1)

目标

至少提供一个以下选项以指定目标

-d DIRECT           直接连接数据库
-u URL, --url=URL   目标 URL(例如:"http://www.site.com/vuln.php?id=1")
-l LOGFILE          从 Burp 或 WebScarab 代理的日志文件中解析目标地址
-m BULKFILE         从文本文件中获取批量目标
-r REQUESTFILE      从文件中读取 HTTP 请求
-g GOOGLEDORK       使用 Google dork 结果作为目标
-c CONFIGFILE       从 INI 配置文件中加载选项

请求

以下选项可以指定连接目标地址的方式

--method=METHOD     强制使用提供的 HTTP 方法(例如:PUT)
--data=DATA         使用 POST 发送数据串(例如:"id=1")
--param-del=PARA..  设置参数值分隔符(例如:&)
--cookie=COOKIE     指定 HTTP Cookie(例如:"PHPSESSID=a8d127e..")
--cookie-del=COO..  设置 cookie 分隔符(例如:;)
--load-cookies=L..  指定以 Netscape/wget 格式存放 cookies 的文件
--drop-set-cookie   忽略 HTTP 响应中的 Set-Cookie 参数
--user-agent=AGENT  指定 HTTP User-Agent
--random-agent      使用随机的 HTTP User-Agent
--host=HOST         指定 HTTP Host
--referer=REFERER   指定 HTTP Referer
-H HEADER, --hea..  设置额外的 HTTP 头参数(例如:"X-Forwarded-For: 127.0.0.1")
--headers=HEADERS   设置额外的 HTTP 头参数(例如:"Accept-Language: fr\nETag: 123")
--auth-type=AUTH..  HTTP 认证方式(Basic,Digest,NTLM 或 PKI)
--auth-cred=AUTH..  HTTP 认证凭证(username:password)
--auth-file=AUTH..  HTTP 认证 PEM 证书/私钥文件
--ignore-code=IG..  忽略(有问题的)HTTP 错误码(例如:401)
--ignore-proxy      忽略系统默认代理设置
--ignore-redirects  忽略重定向尝试
--ignore-timeouts   忽略连接超时
--proxy=PROXY       使用代理连接目标 URL
--proxy-cred=PRO..  使用代理进行认证(username:password)
--proxy-file=PRO..  从文件中加载代理列表
--tor               使用 Tor 匿名网络
--tor-port=TORPORT  设置 Tor 代理端口代替默认端口
--tor-type=TORTYPE  设置 Tor 代理方式(HTTP,SOCKS4 或 SOCKS5(默认))
--check-tor         检查是否正确使用了 Tor
--delay=DELAY       设置每个 HTTP 请求的延迟秒数
--timeout=TIMEOUT   设置连接响应的有效秒数(默认为 30)
--retries=RETRIES   连接超时时重试次数(默认为 3)
--randomize=RPARAM  随机更改给定的参数值
--safe-url=SAFEURL  测试过程中可频繁访问且合法的 URL 地址(译者注:
                    有些网站在你连续多次访问错误地址时会关闭会话连接,
                    后面的“请求”小节有详细说明)
--safe-post=SAFE..  使用 POST 方法发送合法的数据
--safe-req=SAFER..  从文件中加载合法的 HTTP 请求
--safe-freq=SAFE..  每访问两次给定的合法 URL 才发送一次测试请求
--skip-urlencode    不对 payload 数据进行 URL 编码
--csrf-token=CSR..  设置网站用来反 CSRF 攻击的 token
--csrf-url=CSRFURL  指定可提取防 CSRF 攻击 token 的 URL
--force-ssl         强制使用 SSL/HTTPS
--hpp               使用 HTTP 参数污染攻击
--eval=EVALCODE     在发起请求前执行给定的 Python 代码(例如:
                    "import hashlib;id2=hashlib.md5(id).hexdigest()")

优化

以下选项用于优化 sqlmap 性能

-o                  开启所有优化开关
--predict-output    预测常用请求的输出
--keep-alive        使用持久的 HTTP(S) 连接
--null-connection   仅获取页面大小而非实际的 HTTP 响应
--threads=THREADS   设置 HTTP(S) 请求并发数最大值(默认为 1)

注入

以下选项用于指定要测试的参数,
提供自定义注入 payloads 和篡改参数的脚本

-p TESTPARAMETER    指定需要测试的参数
--skip=SKIP         指定要跳过的参数
--skip-static       指定跳过非动态参数
--param-exclude=..  用正则表达式排除参数(例如:"ses")
--dbms=DBMS         指定后端 DBMS(Database Management System,
                    数据库管理系统)类型(例如:MySQL)
--dbms-cred=DBMS..  DBMS 认证凭据(username:password)
--os=OS             指定后端 DBMS 的操作系统类型
--invalid-bignum    将无效值设置为大数
--invalid-logical   对无效值使用逻辑运算
--invalid-string    对无效值使用随机字符串
--no-cast           关闭 payload 构造机制
--no-escape         关闭字符串转义机制
--prefix=PREFIX     注入 payload 的前缀字符串
--suffix=SUFFIX     注入 payload 的后缀字符串
--tamper=TAMPER     用给定脚本修改注入数据

检测

以下选项用于自定义检测方式

--level=LEVEL       设置测试等级(1-5,默认为 1)
--risk=RISK         设置测试风险等级(1-3,默认为 1)
--string=STRING     用于确定查询结果为真时的字符串
--not-string=NOT..  用于确定查询结果为假时的字符串
--regexp=REGEXP     用于确定查询结果为真时的正则表达式
--code=CODE         用于确定查询结果为真时的 HTTP 状态码
--text-only         只根据页面文本内容对比页面
--titles            只根据页面标题对比页面

技术

以下选项用于调整特定 SQL 注入技术的测试方法

--technique=TECH    使用的 SQL 注入技术(默认为“BEUSTQ”,译者注:
                    B: Boolean-based blind SQL injection(布尔型盲注)
                    E: Error-based SQL injection(报错型注入)
                    U: UNION query SQL injection(联合查询注入)
                    S: Stacked queries SQL injection(堆叠查询注入)
                    T: Time-based blind SQL injection(时间型盲注)
                    Q: inline Query injection(内联查询注入)
--time-sec=TIMESEC  延迟 DBMS 的响应秒数(默认为 5)
--union-cols=UCOLS  设置联合查询注入测试的列数目范围
--union-char=UCHAR  用于暴力猜解列数的字符
--union-from=UFROM  设置联合查询注入 FROM 处用到的表
--dns-domain=DNS..  设置用于 DNS 渗出攻击的域名(译者注:
                    推荐阅读《在SQL注入中使用DNS获取数据》
                    http://cb.drops.wiki/drops/tips-5283.html,
                    在后面的“技术”小节中也有相应解释)
--second-url=SEC..  设置二阶响应的结果显示页面的 URL(译者注:
                    该选项用于 SQL 二阶注入)
--second-req=SEC..  从文件读取 HTTP 二阶请求

指纹识别

-f, --fingerprint   执行广泛的 DBMS 版本指纹识别

枚举

以下选项用于获取后端 DBMS 的信息,结构和数据表中的数据。
此外,还可以运行你输入的 SQL 语句

-a, --all           获取所有信息、数据
-b, --banner        获取 DBMS banner
--current-user      获取 DBMS 当前用户
--current-db        获取 DBMS 当前数据库
--hostname          获取 DBMS 服务器的主机名
--is-dba            探测 DBMS 当前用户是否为 DBA(数据库管理员)
--users             枚举出 DBMS 所有用户
--passwords         枚举出 DBMS 所有用户的密码哈希
--privileges        枚举出 DBMS 所有用户特权级
--roles             枚举出 DBMS 所有用户角色
--dbs               枚举出 DBMS 所有数据库
--tables            枚举出 DBMS 数据库中的所有表
--columns           枚举出 DBMS 表中的所有列
--schema            枚举出 DBMS 所有模式
--count             获取数据表数目
--dump              导出 DBMS 数据库表项
--dump-all          导出所有 DBMS 数据库表项
--search            搜索列,表和/或数据库名
--comments          枚举数据时检查 DBMS 注释
-D DB               指定要枚举的 DBMS 数据库
-T TBL              指定要枚举的 DBMS 数据表
-C COL              指定要枚举的 DBMS 数据列
-X EXCLUDE          指定不枚举的 DBMS 标识符
-U USER             指定枚举的 DBMS 用户
--exclude-sysdbs    枚举所有数据表时,指定排除特定系统数据库
--pivot-column=P..  指定主列
--where=DUMPWHERE   在转储表时使用 WHERE 条件语句
--start=LIMITSTART  指定要导出的数据表条目开始行数
--stop=LIMITSTOP    指定要导出的数据表条目结束行数
--first=FIRSTCHAR   指定获取返回查询结果的开始字符位
--last=LASTCHAR     指定获取返回查询结果的结束字符位
--sql-query=QUERY   指定要执行的 SQL 语句
--sql-shell         调出交互式 SQL shell
--sql-file=SQLFILE  执行文件中的 SQL 语句

暴力破解

以下选项用于暴力破解测试

--common-tables     检测常见的表名是否存在
--common-columns    检测常用的列名是否存在

用户自定义函数注入

以下选项用于创建用户自定义函数

--udf-inject        注入用户自定义函数
--shared-lib=SHLIB  共享库的本地路径

访问文件系统

以下选项用于访问后端 DBMS 的底层文件系统

--file-read=FILE..  读取后端 DBMS 文件系统中的文件
--file-write=FIL..  写入到后端 DBMS 文件系统中的文件
--file-dest=FILE..  使用绝对路径写入到后端 DBMS 中的文件

访问操作系统

以下选项用于访问后端 DBMS 的底层操作系统

--os-cmd=OSCMD      执行操作系统命令
--os-shell          调出交互式操作系统 shell
--os-pwn            调出 OOB shell,Meterpreter 或 VNC
--os-smbrelay       一键调出 OOB shell,Meterpreter 或 VNC
--os-bof            利用存储过程的缓冲区溢出
--priv-esc          数据库进程用户提权
--msf-path=MSFPATH  Metasploit 框架的本地安装路径
--tmp-path=TMPPATH  远程临时文件目录的绝对路径

访问 Windows 注册表:

以下选项用于访问后端 DBMS 的 Windows 注册表

--reg-read          读取一个 Windows 注册表键值
--reg-add           写入一个 Windows 注册表键值数据
--reg-del           删除一个 Windows 注册表键值
--reg-key=REGKEY    指定 Windows 注册表键
--reg-value=REGVAL  指定 Windows 注册表键值
--reg-data=REGDATA  指定 Windows 注册表键值数据
--reg-type=REGTYPE  指定 Windows 注册表键值类型

通用选项:

以下选项用于设置通用的参数

-s SESSIONFILE      从文件(.sqlite)中读入会话信息
-t TRAFFICFILE      保存所有 HTTP 流量记录到指定文本文件
--batch             从不询问用户输入,使用默认配置
--binary-fields=..  具有二进制值的结果字段(例如:"digest")
--check-internet    在访问目标之前检查是否正常连接互联网
--crawl=CRAWLDEPTH  从目标 URL 开始爬取网站
--crawl-exclude=..  用正则表达式筛选爬取的页面(例如:"logout")
--csv-del=CSVDEL    指定输出到 CVS 文件时使用的分隔符(默认为“,”)
--charset=CHARSET   指定 SQL 盲注字符集(例如:"0123456789abcdef")
--dump-format=DU..  导出数据的格式(CSV(默认),HTML 或 SQLITE)
--encoding=ENCOD..  指定获取数据时使用的字符编码(例如:GBK)
--eta               显示每个结果输出的预计到达时间
--flush-session     清空当前目标的会话文件
--forms             解析并测试目标 URL 的表单
--fresh-queries     忽略存储在会话文件中的查询结果
--har=HARFILE       将所有 HTTP 流量记录到一个 HAR 文件中
--hex               获取数据时使用 hex 转换
--output-dir=OUT..  自定义输出目录路径
--parse-errors      从响应中解析并显示 DBMS 错误信息
--preprocess=PRE..  使用给定脚本预处理响应数据
--repair            重新导出具有未知字符的数据(?)
--save=SAVECONFIG   将选项设置保存到一个 INI 配置文件
--scope=SCOPE       用正则表达式从提供的代理日志中过滤目标
--test-filter=TE..  根据 payloads 和/或标题(例如:ROW)选择测试
--test-skip=TEST..  根据 payloads 和/或标题(例如:BENCHMARK)跳过部分测试
--update            更新 sqlmap

杂项

-z MNEMONICS        使用短助记符(例如:“flu,bat,ban,tec=EU”)
--alert=ALERT       在找到 SQL 注入时运行 OS 命令
--answers=ANSWERS   设置预定义回答(例如:“quit=N,follow=N”)
--beep              出现问题提醒或在发现 SQL 注入时发出提示音
--cleanup           指定移除 DBMS 中的特定的 UDF 或者数据表
--dependencies      检查 sqlmap 缺少(可选)的依赖
--disable-coloring  关闭彩色控制台输出
--gpage=GOOGLEPAGE  指定页码使用 Google dork 结果
--identify-waf      针对 WAF/IPS 防护进行彻底的测试
--mobile            使用 HTTP User-Agent 模仿智能手机
--offline           在离线模式下工作(仅使用会话数据)
--purge             安全删除 sqlmap data 目录所有内容
--skip-waf          跳过启发式检测 WAF/IPS 防护
--smart             只有在使用启发式检测时才进行彻底的测试
--sqlmap-shell      调出交互式 sqlmap shell
--tmp-dir=TMPDIR    指定用于存储临时文件的本地目录
--web-root=WEBROOT  指定 Web 服务器根目录(例如:"/var/www")
--wizard            适合初级用户的向导界面

标签:Sqlmap,网络安全,DBMS,HTTP,..,--,指定,----,sqlmap
From: https://blog.csdn.net/2401_83582688/article/details/143063833

相关文章

  • RabbitMQ 普通模式
    RabbitMQ普通模式一、普通模式示意图二、普通模式介绍RabbitMQ普通模式也称为点对点模式,它是消息队列的一种基本实现方式。在这种模式下,生产者将消息发送到队列中,消费者从队列中接收并处理消息。每条消息只会被一个消费者接收,其他消费者无法重复消费。特点:单一消费......
  • java Nodejs python php微信小程序的校园跑腿系统628
    目录项目介绍具体实现截图技术介绍HBuilderX协同过滤算法java类核心代码部分展示其他springboot项目推荐详细视频演示源码获取项目介绍伴随着社会以及科学技术的发展,小程序已经渗透在人们的身边,小程序慢慢的变成了人们的生活必不可少的一部分,紧接着网络飞速的发展,小......
  • 微信小程序python flask django火锅店点餐订餐系统
    目录项目介绍具体实现截图技术介绍HBuilderX协同过滤算法java类核心代码部分展示其他springboot项目推荐详细视频演示源码获取项目介绍火锅店点餐系统,主要包括管理员与用户二个权限角色,对于用户角色不同,所使用的功能模块相应不同。本文从管理员、用户的功能要求出发......
  • 记录Redis+MQ延迟双删保证缓存一致性
    场景描述在博客系统中,用户可以给博客点赞或者评论,这些操作需要更新数据库中的数据,同时要保证缓存中的博客信息与数据库保持一致。为了提高性能,博客数据会存放在Redis缓存中。但当有大量用户同事点赞或是评论时,缓存和数据库中的数据可能出现不一致。何谓延迟双删?延迟双删......
  • Python学习的自我理解和想法(15)
    学的是b站的课程(千锋教育),跟老师写程序,不是自创的代码!今天是学Python的第15天,从今天开始,每天一到两个常用模块,更完恢复到原来的,开学了,时间不多,写得不多,见谅。目录OS模块(1).获取当前目录(2)获取当前路径(3)创建文件夹(4)删除文件夹(5)重命名文件或者文件夹(6)删除文件......
  • C语言指针
    1.程序中地址与指针实例讲解Hi!欢迎来到指针的世界,也许您早已听过它的大名,指针被称为是C语言的精华所在。真正理解和掌握指针是征服C语言的关键所在!在众多的计算机语言中,试问:还有哪门语言可以有C语言这样在作用、速度和安全上平衡得如此优异的呢?而指针则在其中扮演了重要的角......
  • transformers 推理 Qwen2.5 等大模型技术细节详解(一)transformers 初始化和对象加载(
    上周收到一位网友的私信,希望老牛同学写一篇有关使用transformers框架推理大模型的技术细节的文章。老牛同学刚开始以为这类的文章网上应该会有很多,于是想着百度几篇质量稍高一点的回复这位网友。结果,老牛同学搜索后发现,类似文章确实不少,但是总觉得不太满意,要么细节深度不够,要么......
  • Visual Basic 开发环境语言超详细教程详解总结
    一、章节目录VisualBasic语言简介VisualBasic开发环境VisualBasic语法基础控制结构数组与集合过程与函数用户界面设计文件操作数据库访问学习VisualBasic的方法VisualBasic语言教程简介与总结二、各章节知识点总结VisualBasic语言简介VisualBasic(简称V......
  • Typora超详细教程学习总结界面与功能详解
    一、章节目录Typora简介Typora界面与功能Typora编辑技巧Typora主题与样式Typora与其他工具的配合学习Typora的方法Typora资源简介与总结二、各章节知识点总结Typora简介Typora是一款简洁高效的Markdown编辑器,支持实时预览,让用户在编辑文本的同时可以立即......
  • ARP协议超详细知识点详解入门攻略总结
    章节目录一、ARP协议概述二、ARP协议的工作原理三、ARP缓存及其管理四、ARP报文格式及类型五、ARP协议的应用场景六、ARP协议的安全性及防御措施七、如何学习ARP协议知识八、资源简介一、ARP协议概述重点详细内容知识点总结:ARP(AddressResolutionProtocol)地址解析协议......