XXE学习(待更新)
2024-09-04 21:52:57
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.实体引用
在对小于(<)、大于(>)、与(&)、单引号(')、双引号(”)等需要实体引用时,大于号是合法的,对所有用实体引用养成好习惯
< > & ' &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;©right;</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;©right;</author>
外部注入
浏览器不会解析读取数据包,但是基于PHP解析即可
最新文章
- Linux网关配置(centos6)
- Leetcode Add Binary
- Mac 下 Nginx、MySQL、PHP-FPM 的安装配置
- Oracle数据库——用户、方案的创建与管理
- redhat 新装后不能联网
- Python错误处理
- 2D地图随机生成
- Elasticlunr.js 简单介绍
- Android 框架练成 教你打造高效的图片加载框架
- 巧用MYSQL中SQL语句
- SVG的学习(34—36)
- SQL Server 锁实验(SELECT加锁探究)
- bzoj1398 Necklace
- CSS实现16:9等比例盒子
- springboot集成mybatis-generator时候遇到的问题
- 20181220 Oracle程序包基本开发逻辑
- Android总结之WebView与Javascript交互[转]
- FusionCancer-人类癌症相关的融合基因的数据库
- Dubbo-Centos7管控台安装
- 在Telnet中用FTP传输文件