[ctf web]XXE通过DTD读取文件+XML和DTD基础语法(以[ctfshow]web_ak4观心和[NCTF2019]Fake XML cookbook为例)

XML基础

XML文件可以分为三部分:

  • XML声明 <?xml version ="1.0" encoding="UTF-8"?>
  • DTD文档定义类型。
  • 文档元素 <foo><note category="COOKING"></note></foo> 根元素foo,子元素note,属性category

XML语法

XML被设计为传输和存储数据

基本语法:

- 所有 XML 元素都须有关闭标签。

- XML 标签对大小写敏感。

- XML 必须正确地嵌套。

- XML 文档必须有根元素。

- XML 的属性值须加引号。


预定义的实体引用

< < 小于
> > 大于
& & 和号
单引号
" " 引号

注释

<!-- -->



DTD 文档类型定义

DTD可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。DTD可被成行地声明于XML文档中,也可作为一个外部引用。

DTD声明元素:

在 DTD 中,XML 元素通过元素声明来进行声明。元素声明使用下面的语法:

 <!ELEMENT 元素名称 类别>  [类别可为:EMPTY、(#PCDATA)、ANY]
 <!ELEMENT 元素名称 (元素内容)>
 注:其实就是定义元素用的,或者说定义一个对象中的<键>一样。

DTD声明实体:

<!ENTITY 实体名称 "实体的值">
注:其实DTD实体就是变量名 + 值,就是个实例,对象而已。

内部的 DOCTYPE 声明

格式:

<!DOCTYPE 根元素 [元素声明]>

例子:

<?xml version="1.0"?>
<!DOCTYPE note [		<!-- 定义此文档是 note 类型的文档。-->
  <!ELEMENT note (to,from,heading,body)>		<!-- 定义 note 元素有两个元素:"to,body" -->
  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shu天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值