首页 > 数据库 >sqlmap基础知识(三)

sqlmap基础知识(三)

时间:2024-04-06 13:58:28浏览次数:20  
标签:sqlmap DBMS -- 数据库 基础知识 枚举 SQL 注入

一、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,DBMS,--,数据库,基础知识,枚举,SQL,注入
From: https://blog.csdn.net/ys1215/article/details/137411494

相关文章

  • 微信小程序开发 基础知识(持续更新中~)
    ......
  • 学习 Git 基础知识 - 日常开发任务手册
    欢迎来到我关于Git的综合指南,Git是一种分布式版本控制系统,已经在软件开发中彻底改变了协作和代码管理方式。无论你是经验丰富的开发者还是刚开始编程之旅的新手,理解Git对于正确掌控代码、高效管理项目和与他人合作至关重要。在本教程中,我将带领你了解Git的基础知识,涵盖从......
  • 第三章-常用的渗透测试工具-(sqlmap)
    常用渗透测试工具1.sqlmap支持的数据库:MySQL、Oracle、PostgreSQL、SQLServer、Access、IBMDB2、SQLite、Firebird、Sybase、SAPMaxDB支持的六种注入技术:boolean-based盲注、time-based盲注、error-based、UNION查询、堆叠查询和带外查询B:Boolean-basedblindSQLinjectio......
  • 数据库基础知识
    数据库基础知识一、数据库基础知识(一)计算机数据管理的发展1.数据与数据处理数据是指存储在某一种媒体上能够识别的物理符号。数据的概念包括两个方面:其一是描述事物特性的数据内容;其二是存储在某一种媒体上的数据形式,数据形式可以是多种多样的。信息:一种已经被加工为特......
  • MATLAB | 基础知识
    专题一:MATLAB数值数据1.数值数据类型的分类(1)整型: 无符号整数:无符号8位整数,无符号16位整数,无符号32位整数,无符号64位整数 带符号整数:带符号8位整数,带符号16位整数,带符号32位整数,带符号64位整数无符号8位整数数据范围:00000000~11111111(0~2^8-1)带符号8位整数数据范......
  • javascript常见100问|前端基础知识|问ajax-fetch-axios-区别请用 XMLHttpRequestfetch
    00-开始前端基础知识HTMLCSSJSHTTP等基础知识是前端面试的第一步,基础知识不过关将直接被拒。本章将通过多个面试题,讲解前端常考的基础知识面试题,同时复习一些重要的知识点。为何要考察扎实的前端基础知识,是作为前端工程师的根本。基础知识能保证最基本的使用,即招聘......
  • 01-ARM64体系结构基础知识
    本章思考题ARMv8体系结构处理器包含多少个通用寄存器?答:提供31个64位宽的通用寄存器,可以减少对栈的访问,从而提高性能。AArch64执行状态包含多少个异常等级?它们分别有什么作用?答:定义ARMv8异常模型,支持4个异常等级,即EL0~EL3。请简述PSTATE寄存器中NZCV标志位的含义。答:如下表所......
  • Vue基础知识:声明式导航---导航链接router-link,router-link是什么,怎么用?router-link-ac
    router-link是什么?vue-router提供的一个全局组件,router-link(用于取代a标签)router-link怎么用?router-link的好处?1.能够跳转,能高亮(自带激活时的类名)1.能跳转,配置to属性指定路径(必须)。本质还是a标签,to不需要多加#既然已经有了a标签,为什么还有加一个router-link标签呢?......
  • Java后端对 前端的学习了解 ,基础知识和各框架功能发展概述,以及了解前后端的分离史
    前端的框架太多,杂乱,后端只需要掌握简单的即可 (基础的和vue框架后面详细有笔记)一.前端三要素1.HTML(结构):超文本标记语言,决定网页的结构和内容(最基础)2.CSS(表现) :层叠样式表,设定页面的修饰,相当于化妆品3.JavaScript(行为):是一种弱类型的脚本语言,源代......
  • 数据库基础知识
    ......