sqlmap基础知识(三)

2024-04-06 07:12
文章标签 基础知识 sqlmap

本文主要是介绍sqlmap基础知识(三),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、sqlmap的基本使用

指定检测级别

sqlmap使用的payloads直接从文本文件xml/payloads.xml中载入

根据该文件顶部的相关指导说明进行设置,如果sqlmap漏过了特定的注入,

你可以选择自己修改指定的payload用于检测

level有5级,级别越高检测越全,默认为1

  1. -level 1 默认等级,执行基本的SQL注入测试和一些常见的payloads
  2. -level 2 在Level 1的基础上,增加了对HTTP Cookie的测试
  3. -level 3 在Level 2的基础上,增加了对HTTP User-Agent和Referer头部的测试
  4. -level 4 进一步增加更复杂的payloads和测试方法
  5. -level 5 最高等级,包含所有payloads,会自动破解Cookie、XFF等头部注入,提供最全面的测试

risk有3级,级别越高风险越大,默认为1

  1. -risk 2 会在默认的检测上添加大量时间型盲注语句测试
  2. -risk 3 会在原基础上添加OR类型的布尔型盲注,可能会update到时修改数据库,有很大的风险

页面对比

选项:--string,--not-string,--regexp 和 --code

默认区分一个True 查询和 False 查询(布尔型盲注背后的相关理念概念)是通过对比注入前后返回的结果是否一致进行判断的。

不过这个参照方法并不一定有效,因为可能就算没有进行注入,页面内容也会进行相应更新。例如:页面上有计算器、动态的广告横幅、或者任何基于时间而非用户输入内容进行动态渲染的内容。为了避免类似的情况,sqlmap会尽可能尝试识别出对应的代码段所返回请求内容并做好相关的处理

如果用户知道可以通过HTTP状态码区分True查询和False查询(例如:200对应True,401对应False),那么可以向sqlmap提供对应的信息。(例如:--code=200)

开关:--text-only 和 --titles

如果用户知道可以通过HTML标题区分True查询和False查询(例如:Welcome对应True,Forbidden对应False),那么可以使用--titles开启基于标题对比的开关

如果HTTP响应报文中存在无效信息(例如:脚本、镶嵌元素等),可以通过过滤页面的内容(开关 --text-only)而只获取文本内容。通过这种方式,大多数情况下,这样会自动调优检测引擎

指定注入类型

以下选项用于调整特定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(内敛查询注入)

例如,如果仅测试利用报错型注入和堆叠查询注入,你可以提供ES

--time-sec=TIMESEC   #设置延时注入时间(默认为5)

--second-order=S..       #设置二阶响应的结果显示页面的URL(该选项用于二阶 SQL 注入)

--dns-domain                #DNS 渗出攻击

如果用户正控制这一台注册为DNS域名服务器的主机(例如:域名attacker.com),则可以使用该选项(例如:--dns-domain attacker.com)来启用此攻击。它的前提条件是使用Administrator(即管理员)权限(因为需要特权端口53)运行sqlmap,这时可以使用常用的(盲注)技术来进行攻击。如果已经识别出一种有效攻击方式(最好是时间型盲注),则这种能够加速获取数据的过程。如果报错型注入或联合查询注入技术可用,则默认情况下将跳过DNS渗出攻击测试。

枚举信息

以下选项用于获取数据库的信息,结构和数据表中的数据

  1. -a,--all                        #获取所有信息、数据
  2. -f,--fingerprint            #采用特定SQL方言或者内带特定错误信息等技术开展详细的DBMS指纹识别
  3. -b,--banner                #获取 DBMS banner,返回数据库的版本号
  4. --current-user              #获取 DBMS 当前用户
  5. --current-db                 #获取 DBMS 当前数据库
  6. --hostname                  #获取 DBMS 服务器的主机名
  7. --is-dba                        #探测 DBMS 当前用户是否为DBA(数据库管理员)
  8. --users                         #枚举出 DBMS 所有用户
  9. --passwords                 #枚举出 DBMS 所有用户的密码哈希
  10. --privileges                   #枚举出 DBMS 所有用户特权级
  11. --roles                          #枚举出 DBMS 所有用户角色
  12. --dbs                            #枚举出 DBMS 所有数据库
  13. --tables                        #枚举出 DBMS 数据库中的所有表,--exclude-sysdbs 以排除所有的系统数据库,对于Oracle,你需要提供 TABLESPACE_NAME 而不是数据库名称
  14. --columns                    #枚举出 DBMS 表中的所有列,对于 PostgreSQL,你需要提供 public 或系统数据库的名称。这是因为不可能枚举其他数据库表,只能枚举出 Web 应用程序用户连接到的数据库模式下的表,它们总是以 public 为别名
  15. --schema                     #枚举出 DBMS 所有模式
  16. --count                         #获取数据表数目
  17. --dump-all                    #如果当前会话用户的读取权限允许,可以一次导出所有数据库表条目
  18. --dump                         #导出 DBMS 数据库表项
  19. --search,-C,-T,-D  #此开关允许你在所有数据库中搜索特定的数据库名和表名,在特定的数据表中搜索特定的列名
  20. --stop 10                       #只取前10行数据
  21. -D DB                           #指定要枚举的 DBMS 数据库
  22. -T TBL                          #指定要枚举的 DBMS 数据表
  23. -C COL                         #指定要枚举的 DBMS 数据列
  24. --sql-query=QUERY     #指定要执行的SQL语句
  25. --sql-shell                     #调出交互式SQL shell

这篇关于sqlmap基础知识(三)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/879327

相关文章

SQL注入漏洞扫描之sqlmap详解

《SQL注入漏洞扫描之sqlmap详解》SQLMap是一款自动执行SQL注入的审计工具,支持多种SQL注入技术,包括布尔型盲注、时间型盲注、报错型注入、联合查询注入和堆叠查询注入... 目录what支持类型how---less-1为例1.检测网站是否存在sql注入漏洞的注入点2.列举可用数据库3.列举数据库

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

计组基础知识

操作系统的特征 并发共享虚拟异步 操作系统的功能 1、资源分配,资源回收硬件资源 CPU、内存、硬盘、I/O设备。2、为应⽤程序提供服务操作系统将硬件资源的操作封装起来,提供相对统⼀的接⼝(系统调⽤)供开发者调⽤。3、管理应⽤程序即控制进程的⽣命周期:进程开始时的环境配置和资源分配、进程结束后的资源回收、进程调度等。4、操作系统内核的功能(1)进程调度能⼒: 管理进程、线

go基础知识归纳总结

无缓冲的 channel 和有缓冲的 channel 的区别? 在 Go 语言中,channel 是用来在 goroutines 之间传递数据的主要机制。它们有两种类型:无缓冲的 channel 和有缓冲的 channel。 无缓冲的 channel 行为:无缓冲的 channel 是一种同步的通信方式,发送和接收必须同时发生。如果一个 goroutine 试图通过无缓冲 channel

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

关于回调函数和钩子函数基础知识的整理

回调函数:Callback Function 什么是回调函数? 首先做一个形象的比喻:   你有一个任务,但是有一部分你不会做,或者说不愿做,所以我来帮你做这部分,你做你其它的任务工作或者等着我的消息,但是当我完成的时候我要通知你我做好了,你可以用了,我怎么通知你呢?你给我一部手机,让我做完后给你打电话,我就打给你了,你拿到我的成果加到你的工作中,继续完成其它的工作.这就叫回叫,手机

有关机械硬盘的基础知识

1,机械硬盘的品牌   目前市场中常见的笔记本电脑的机械硬盘品牌主要有希捷、西部数据、三星等。   2,机械硬盘的容量   硬盘容量,即硬盘所能存储的最大数据量。虽然笔记本电脑硬盘的容量会因单位密度的提升而增加,不过和台式电脑的大容量比起来,笔记本电脑硬盘的容量仍然落后许多。笔记本电脑的硬盘除了对磁盘有体积较小和数量较少的要求之外,对功耗、耐用程度、抗震性及成本等的考虑,也让笔记

OpenGL ES学习总结:基础知识简介

什么是OpenGL ES? OpenGL ES (为OpenGL for Embedded System的缩写) 为适用于嵌入式系统的一个免费二维和三维图形库。 为桌面版本OpenGL 的一个子集。 OpenGL ES管道(Pipeline) OpenGL ES 1.x 的工序是固定的,称为Fix-Function Pipeline,可以想象一个带有很多控制开关的机器,尽管加工

计算机基础知识复习9.6

点对点链路:两个相邻节点通过一个链路相连,没有第三者 应用:PPP协议,常用于广域网 广播式链路:所有主机共享通信介质 应用:早期的总线以太网,无线局域网,常用于局域网 典型拓扑结构:总线型 星型(逻辑总线型) 介质访问控制  静态划分信道 信道划分介质访问控制 频分多路复用FDM 时分多路复用TDM 波分多路复用WDM 码分多路复用CDM 动态分配信道 轮询访问介质访问控

Gitflow基础知识

0.理想状态 现状 听完后的理想状态 没使用过 git 知道 git 是什么,会用 git 基础流程命令 用过 git,但只通过图形化界面操作 脱离图形化界面操作,通过 git 命令操作 会 git 命令 掌握 gitflow 规范,合理使用 rebase 和解决代码冲突问题 1.Git 的基础流程&命令 1.1 基础概念 工作区:代码生产基地,pycharm