XXE漏洞详解(二)——DTD基础

今天继续给大家介绍渗透测试相关知识,本文主要内容是XXE漏洞详解(二)——DTD基础。

免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!

一、DTD简介和用法

DTD,即Document Type Definition,文档类型定义的简称,是一种精确描述XML语言的方式。DTD根据XML语言的语法规则检查XML文档结构的词汇和有效性。DTD主要用于保证XML文档格式正确,我们可以通过比较XML文档和DTD文件来看文档是否合乎规范,元素和标签使用是否正确。
我们可以在XML文档中指定DTD,即内部DTD。也可以将DTD保存在单独的文档中,然后单独添加,这样即外部DTD。

二、内部DTD使用

内部DTD指的是直接在XML文档中声明元素,这时需要在XML的头部声明中添加属性standalone,并将该属性的值设置为"yes"。
内部DTD使用语法如下所示:

<!DOCTYPE root-element 
[
element-declarations
]>

一个内部DTD格式如下所示:

<?xml version="1.0" encoding="utf-8"  standalone="yes" ?>
<!DOCTYPE person [
	<!ELEMENT person (name,age,address,country,major)>
	<!ELEMENT name (#PCDATA)>
	<!ELEMENT age (#PCDATA)>
	<!ELEMENT address (#PCDATA)>
	<!ELEMENT country (#PCDATA)>
	<!ELEMENT major (#PCDATA)>
]>
<person>
<name>Bob</name>
<age>24</age>
<address>1-1-110</address>
<country>China</country>
<major>History</major>
</person>

其中

<!ELEMENT person (name,age,address,country,major)>

定义了person根节点下面存在name、age等属性。

<!ELEMENT name (#PCDATA)>

则定义了name属性的类型是(#PCDATA)。

三、外部DTD使用

外部DTD元素定义在XML文档之外,可以是合法的.dtd文件,也可以是有效的URL。如果要引用外部DTD,那么在XML的头部声明中,需要设置standalone属性为"no"。
外部DTD声明语法为:

<!ENTITY element SYSTEM "xxx.dtd|http://…………">

例如:

<!ENTITY element1 SYSTEM "filename.dtd">
<!ENTITY element2 SYSTEM "http://www.exp.com/exp.dtd">

原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

永远是少年啊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值