XXE基础

XXE(XMl External Injection),即XML外部实体注入漏洞。

XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体得加载,导致可以加载恶意外部文件,造成文件读取、命令执行等。

XXE漏洞通常发生在可以上传XML文件的位置。没有对上传的XML文件进行过滤,导致上传恶意的XML文件。

XML基础

可扩展标记语言,简称XML。用来存储和传输数据。没有预定义标签,用户自定义标签。

XML语法

1.XML标签对大小写敏感

<message> It's right </message>

2.XML元素需要闭合

<p> The girl is very beautiful </p>

3.XML必须正确嵌套

<b><i> This is a test </i></b>

4.XML必须有根元素

<root>
<child>
<subchild>.....</subchild>
</child>
</root>

5.XML属性值必须加引号

<note date = "123456">

6.实体引用

在对小于(<)、大于(>)、与(&)、单引号(')、双引号(”)等需要实体引用时,大于号是合法的,对所有用实体引用养成好习惯

&lt; &gt; &amp; &apos; &aqot;

7.注释

类似HTML注释

<!-- This is a test! -->

8.XML中空格会被保留

HTML会把多个连续的空格字符合并为一个,但是XML不会合并空格

XML文档组成

XML文档形成了一种树结构,从根部开始扩展到枝叶
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

DTD文档类型定义

DTD是定义XML文档合法构建的模块。既可以在XML文档中定义,也可以在外部引用。

DTD实体

实体是用于定义引用普通文本或特殊字符的快捷方式的变量。

实体引用时对实体的引用。

实体可以在内部或外部进行声明。

一个内部实体声明

语法:
<!ENTITY 实体名称 "实体的值">

例子:

DTD 例子:

<!ENTITY writer "Bill Gates">
<!ENTITY copyright "Copyright W3School.com.cn">

XML 例子:

<author>&writer;&copyright;</author>

注释: 一个实体由三部分构成: 一个和号 (&), 一个实体名称, 以及一个分号 (。

一个外部实体声明

语法:
<!ENTITY 实体名称 SYSTEM "URI/URL">

例子:

DTD 例子:

<!ENTITY writer SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">
<!ENTITY copyright SYSTEM "http://www.w3school.com.cn/dtd/entities.dtd">

XML 例子:

<author>&writer;&copyright;</author>

外部注入

浏览器不会解析读取数据包,但是基于PHP解析即可

最新文章

  1. Linux网关配置(centos6)
  2. Leetcode Add Binary
  3. Mac 下 Nginx、MySQL、PHP-FPM 的安装配置
  4. Oracle数据库——用户、方案的创建与管理
  5. redhat 新装后不能联网
  6. Python错误处理
  7. 2D地图随机生成
  8. Elasticlunr.js 简单介绍
  9. Android 框架练成 教你打造高效的图片加载框架
  10. 巧用MYSQL中SQL语句
  11. SVG的学习(34—36)
  12. SQL Server 锁实验(SELECT加锁探究)
  13. bzoj1398 Necklace
  14. CSS实现16:9等比例盒子
  15. springboot集成mybatis-generator时候遇到的问题
  16. 20181220 Oracle程序包基本开发逻辑
  17. Android总结之WebView与Javascript交互[转]
  18. FusionCancer-人类癌症相关的融合基因的数据库
  19. Dubbo-Centos7管控台安装
  20. 在Telnet中用FTP传输文件

热门文章

  1. Ubuntu16.04下使用ufw保护docker容器
  2. python 获取当天和前几天时间数据
  3. Go语言流程控制02--选择结构之switch
  4. ONNX 实时graph优化方法
  5. CUDA运行时 Runtime(一)
  6. java后端知识点梳理——多线程与高并发
  7. 【NX二次开发】Block UI 双精度表
  8. [Azure DevOps] 编译时自动修改版本号
  9. sentinel (史上最全+入门教程)
  10. 『假如我是面试官』RabbitMQ我会这样问