SQLMAP使用

news2024/9/24 19:15:55

SQLMAP

  • SQLMAP是什么
    • SQLMAP可以对URL做什么?
    • SQLMAP支持的注入技术
    • SQLMAP检测注入漏洞流程:
    • SQLMAP的误报检测机制
  • SQLMAP基本使用
    • 常见用法
    • 常见参数
      • tamper参数
      • 操作系统权限参数
      • 文件读写参数

SQLMAP是什么

SQLMAP是一个开源的自动化SQL注入工具,主要功能是扫描、发现并且利用给定的URL的SQL注入漏洞。

SQLMAP可以对URL做什么?

  • 判断可以注入的参数
  • 判断可以使用哪一种SQL注入技术进行注入
  • 判断识别数据库的类型
  • 根据用户的选择,从数据库中读取数据

SQLMAP支持的注入技术

  • 基于布尔的盲注:根据返回页面判断条件真假注入
  • 基于时间的盲注:不能根据页面返回内容判断任何信息,使用条件查询语句查看时间延迟语句是否执行来判断
  • 基于报错的注入:页面会返回错误信息,或者把注入的语句的结果直接返回在页面中
  • 基于联合查询的注入:使用union进行注入
  • 堆查询注入:同时执行多条语句的注入

SQLMAP检测注入漏洞流程:

  1. 网站连通性检测:检测目标的连接状态。
  2. WAF探测:检测网站是否受WAF保护。
  3. 网页稳定性检测:检测网页是否稳定。
  4. 参数动态性检测:检测参数是否有动态性。
  5. 启发式注入检测:探测该参数点是否是动态的、是否为可能的注入点。

SQLMAP的误报检测机制

误报检测: SQLMAP的布尔盲注、时间盲注方式判断注入点时,存在误报的可能。为防止误报,SQLMap引入了误报检测机制。
两个基础检测算法:

  • 页面相似度对比技术(在各种注入技术中大量使用)∶在SQLMap检测的整个过程中,会有一个原始响应的定义,指的是在网站连通性检测的过程中,如果网站成功响应,则把该响应定义为原始响应(包括状态码、HTTP响应头、HTTP响应体)。一个HTTP请求成功响应后,将与原始响应进行对比,得出对比结果,算法输出为True表示当前响应与原始响应相似,算法输出为False表示当前响应与原始响应不相似。
  • 高斯分布识别响应机制:(在UNION注入和时间盲注过程中使用)︰网站的响应是基于逻辑的,如果一组请求,网站的处理逻辑相同,那么响应几乎也是相同的。如果某一个响应出现了变化,则可以认为网站处理逻辑变了,这种逻辑的变化,可能正是因为注入成功了。

SQLMAP基本使用

常见用法

  1. -u参数(直接输入目标的URL)
    语法:sqlmap -u “www.test.com/index.php?id=1”;
    验证过程:判断可以注入的参数、判断可以使用哪种SQL注入技术来注入、识别出所有存在的注入类型、尝试判断数据库版本,开发语言,数据库系统。
    sqlmap -u http://192.168.0.1/page.php?id=10 --current-db //爆当前库
    sqlmap -u http://192.168.0.110/page.php?id=10 -D 数据库名 --tables//爆表名
    sqlmap -u http://192.168.0.1/page.php?id=10 -D 数据库名 -T表名 --columns//爆字段
    sqlmap -u http://192.168.0.1/page.php?id=10 -D 数据库名 -T 表名 -C 字段名1,字段名2,字段名3…(互相用逗号隔并) --dump//显示数据
    现在以爆库名为例:
    在这里插入图片描述
    在第一次输入的时候,会出现这么一个选项:
    在这里插入图片描述
    直接勾选第一个Y第二个n即可。

  2. -r参数 (从文本文件之中获得http请求)
    语法:sqlmap -r /usr/1.txt
    注意:在使用该命令时,必须指明1.txt文件所在的绝对路径
    其余的与-u参数基本一致

  3. -m参数(从文件中取出保存的url进行检测)
    语法:sqlmap -m /usr/2.txt
    注意:使用的时候,必须指明2.txt所在的绝对路径

常见参数

枚举参数:
参数:-b,–banner…列出版本号
参数: --dbs…列出所有数据库的库名
参数:–current-db…列出当前使用的数据库库名
参数:–tables…列出数据库中的表列
参数:–columns…出数据表中的字段
参数:–dump…转储数据库表项,查询字段值
参数: --users…列出所有管理用户
参数: --passwords…列出并破解数据库用户的hash
参数: --privileges…列出数据库管理员权限
请求参数:
参数:–method…指定使用的http方法
参数: --data…把数据以POST方式提交
参数:–param-del …GET或POST的数据用&以外的其他字符分割参数: --cookie,–load-cookies,–drop-set-cookie设置cookie
参数: --referer…伪造HTTP中的Referer头
参数: --user-agent…自定义HTTP中的User-Agent头
参数: --headers…增加额外的http头,不同的头使用“\n”分隔
参数:–timeout…设置超时时间
参数: --retries…设置重试次数
检测参数:
参数:-v…显示等级,共有7个等级,为0时只显示python错误以及严重的信息,为1时(默认)同时显示基本信息和警告信息,为2时同时显示debug信息,为3时同时显示注入的payload,为4时同时显示HTTP请求,为5时同时显示HTTP响应头,为6时同时显示HTTP响应页面。
参数: --risk…风险等级,共有4个等级
参数: -p,–skip…手动用-p参数设置想要测试的参数,–skip设置跳过的参数
参数: --flush-session…清空SQLMAP缓存的会话信息,因为SQLMAP在第一次检测完之后会产生缓存,在后续过程中就会变得比较快了。
注入技术参数:
参数: --technique…指定sqlmap使用的探测技术,B表示布尔盲注,T表示时间盲注(延迟注入),E表示报错注入,U表示联合查询注入,S表示堆查询注入参数: --time-sec设定延迟注入的时间(默认为5秒)
参数: --union-cols…设定UNION查询字段数
参数: --union-char…设定UNION查询时使用的字符
参数: --second-order…设置二次注入的URL
参数: --tamper…使用sqlmap自带的tamper或者自己写的tamper来混淆payload,通常用来绕过WAF和IPS。

tamper参数

tamper脚本是SQLMAP中用于绕过waf或应对网站过滤逻辑的脚本。SQLMAP自带了一些tamper脚本,可以在tamper目录(Kali系统下默认为/usr/share/sqlmap/tamper)下查看它们。用户也可以根据已有的tamper脚本来编写自己的tamper脚本(绕过逻辑)。
绕过逻辑又有以下几种方式:

  1. 过滤等号:将等号变为like
    输入:select * from users where id=1
    输出:select * from users where id like 1
  2. 替换字符、过滤单引号
    输入: “1” and ‘1’=‘1’
    输出: “1” and %00%271%00%27=%00%271"
  3. url编码转换
    输入:select field from table
    输出:%53%45%4c%45%43%54%20%46%49%45%4c%44%20%46%52%4f%4d%20%54%41%42%4c%45
    转换规则就是:先把字符转换为ASCII码,再转变成十六进制。
  4. unicode编码绕过
    输入:SELECT%20FIELD%20FROM TABLE
    输出:%u0053%u0045%u004c%u0045%u0043%u0054%u0020%uO046%u0049%u0045%u004c%u0044%u0020%u0046…
    unicode编码就是以%u开头,然后后面是唯一对应的一个数字,都转化为unicode编码。

操作系统权限参数

  1. –os-cmd执行操作系统命令
  2. –os-shell交互式的操作系统的shell

文件读写参数

  1. –file-read读取文件
  2. –file-write写入文件
  3. –file-dest指明写入文件的绝对路径

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/382692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAP 生产订单/流程订单中日期的解释

SAP 生产订单/流程订单中日期的解释 基本开始日期:表示订单的开始日期 基本完成日期:表示订单的完成日期 我们在输入基本开始日期和基本完成日期时需要关注 调度 下面的“类型”,其中有向前、向后、当天日期等: 调度类型 为向前…

上海交大陈海波教授、夏虞斌教授领衔巨作上市:《操作系统:原理与实现》

❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作…

java 进阶—线程的常用方法

大家好,通过java进阶—多线程,我们知道的什么是进程,什么是线程,以及线程的三种创建方式的选择 今天,我们来看看线程的基础操作 start() 开启线程 public class Demo implements Runnable {Overridepublic void run…

第五回:样式色彩秀芳华

import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np第五回详细介绍matplotlib中样式和颜色的使用,绘图样式和颜色是丰富可视化图表的重要手段,因此熟练掌握本章可以让可视化图表变得更美观,突出重点和凸显艺术性。…

施工机械设备群远程在线监控管理系统

一、项目背景 在加强基础设施建设等一系列政策的牵引下,我国工程机械设备市场连续保持强劲增长势头,伴随国内中高端机械设备公司业务的不断扩展,施工大型机械设备的应用率不断提高,铁路施工特别是架桥机作业过程被认为是一个极易出…

元宇宙到底是什么?元宇宙解读,这一篇就够了!

欢迎来到Hubbleverse 🌍 关注我们 关注宇宙新鲜事 📌 预计阅读时长:12分钟 本文仅代表作者个人观点,不代表平台意见,不构成投资建议。 在元宇宙中,我们被承诺可以成为任何人,做任何事&#…

JavaSE20-集合1-list

文章目录一、集合概念二、list集合1、list集合特点2、ArrayList2.1 创建对象2.2 常用方法2.3 遍历2.3.1 使用索引遍历2.3.2 使用迭代器遍历2.3.3 使用foreach遍历2.3.4 集合转换为数组遍历3、LinkedList3.1 创建对象3.2 常用方法3.3 遍历4、ArrayList和LinkedList的区别一、集合…

支持DDR5,超频更简单,小雕够给力,技嘉B760M小雕WIFI主板上手

目前13代酷睿已经全员集结了,其中全新的i5 13490F应该依然会备受欢迎,当然了,刚上市不久的13代酷睿价格方面还不是很有吸引力,好在12代酷睿在新一代主板上面依然可用,所以预算有限的朋友,完全可用继续使用1…

原生微信小程序引入npm和安装Vant Weapp

目录一、引入npm安装Vant Weapp1、引入npm2、安装Vant Weapp3、修改 app.json4、修改 project.config.json二、构建npm一、引入npm安装Vant Weapp 环境:Windows10 开发工具:微信开发者工具 本地环境:已安装过node.js 1、引入npm cmd进入到你…

MyBatis源码分析(二、续)SqlSource创建流程,SQL如何解析?如何将#{id}变成?的

文章目录实例一、SqlSource处理入口二、SqlSource处理逻辑1、XMLScriptBuilder 构造方法2、解析动态sql3、DynamicSqlSource4、RawSqlSource解析sql&#xff08;1&#xff09;parse方法解析sql写在后面实例 此处我们分析的sql&#xff1a; <select id"selectBlog&quo…

|干货 | 五种常用类型之String字符串详解

一. 背景说明小白&#xff1a;哥&#xff0c;java中String是最常用类型&#xff0c;Redis中也是吗?哥&#xff1a;差不多&#xff0c;我给你稍微讲一下。二. 数据类型依据Redis官网&#xff0c;目前Redis数据类型共计九种。具体整理如下&#xff1a;常用的数据类型有&#xff…

第九章 实现isReactive和isReadonly

实现isReactive和isReadonly isReactive实现 先上测试用例&#xff08;其实这个测试用例也是reactive.spec.ts中追加的两个&#xff09;: import { isReactive, reactive } from "../reactive"describe(reactive,()>{it(happy path,()>{const original {fo…

taobao.item.sku.add( 添加SKU )

&#xffe5;开放平台免费API必须用户授权 新增一个sku到num_iid指定的商品中 传入的iid所对应的商品必须属于当前会话的用户 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 请求参数 响应参数 点击获取key和secret 请求…

第十四节 包、权限修饰符、final、常量

包 1.同一个包下的类&#xff0c;相互可以直接访问。 2.不同包下的类要导包后才能访问。 AIT回车键导包。 权限修饰符 什么是权限修饰符? ●权限修饰符:是用来控制一个成员能够被访问的范围。 ●可以修饰成员变量&#xff0c;方法&#xff0c;构造器&#xff0c;内部类&…

并发就一定快吗?答:肯定不是啊

文章目录一、多线程概念1.1 程序的并发与并行1.1.1 程序的并行1.1.2 程序的并发1.2 进程与线程1.2.1 进程1.2.2 线程1.2.3 多线程并发就一定快吗&#xff1f;答案直接戳这里&#x1f449;&#xff1a;多线程并发就一定快吗&#xff1f; 一、多线程概念 在实际应用中&#xff…

车载测试之电子设备有哪些测试点?

现在车上大大小小的控制器大几十个&#xff0c;主机厂都要做哪些测试&#xff0c;满足哪些要求&#xff0c;才能使控制器达到量产要求呢&#xff1f; 整车开发流程 在聊测试之前&#xff0c;首先了解一下一款车的开发流程。在主机厂我们经常能听到“某某项目开G2阀”、“某某…

Java接口专题

基本介绍 接口给出一些没有实现的方法&#xff0c;封装到一起&#xff0c;到某个类使用时再根据具体情况把这些方法写出来。 注意&#xff1a;在jdk7之前&#xff0c;接口里所有的方法都是抽象方法。在jdk8之后接口中可以有静态方法&#xff0c;默认方法 interface 接口名{/…

Linux进程控制(进程终止+进程等待+进程程序替换)

文章目录&#xff1a;一、进程终止进程退出码常见的进程退出方法exit函数_exit函数returnexit vs _exit vs return二、进程等待进程等待的必要性进程等待的方法waitwaitpid - 从子进程获取状态信息如何获取子进程status进程的阻塞等待和非阻塞等待三、进程程序替换替换原理进程…

科技制造商必须对安全、设计选择承担更多责任

网络安全和基础设施安全局局长称当今商业网络安全的现状是"不可持续的"&#xff0c;公司、消费者和政府必须集体转变期望&#xff0c;让主要软件和硬件制造商对不安全的产品负责&#xff0c;而不是用户。 拜登政府预计将在未来几天发布一项战略&#xff0c;该战略将…

burp联动xray进行被动扫描

burp联动xray进行被动扫描0、简介1、打开burp&#xff0c;设置转发数据包&#xff0c;将burp抓到的数据包&#xff0c;额外转发到本机的7777端口2、出现这个代表配置成功3、接着在xray里输入这串代码&#xff0c;让xray进行监听本机的7777端口&#xff0c;进行被动扫描&#xf…