二.XML基础
xml是一种用于标记电子文件使其具有结构性的标记语言,用于标记数据,和定义数据类型,可以为两种不同系统进行信息交换,
XML文档结构包括xml声明,DTD文档类型定义(可选),文档元素
二.DTD文档定义,可以内部声明,也可以外部引用
<!DOCTYPE address [<!ELEMENT address (#PCDATA)>
<!ENTITY name "Tanmay patil">
<!ENTITY company "TutorialsPoint">
<!ENTITY phone_no "(011) 123-4567">
]>
-
<!DOCTYPE 根元素 SYSTEM "DTD文件的URL"> <!DOCTYPE address SYSTEM "address.dtd"> <!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文件的URL">
3.实体声明,相等于定义了一个变量
<!ELEMENT>这块略过,对xxe影响不大,自行去菜鸟教程了解 <!ENTITY>(重点):直接声明
<!ENTITY 实体名称 实体的值 引用外部 <!ENTITY 实体名称 SYSTEM "URI">或者
<!ENTITY 实体名称 PUBLIC "public_ID" "URI">三,如何判断xxe漏洞
这里用一题南邮的web1题来作为案例
bp抓包看下,
发现Content-type:application/xml,或者直接从请求报文就能看出是xml了,说明可以去利用xml解析器来帮我们做一些事
而且从题目提示中,得知flag就在/flag这个文件中。只要能弄到源码,就美滋滋了,所以想到xxe,那么直接看下我是怎么写的
<!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=/flag>这句的意思就是SYSTEM这个系统命名将这个url的文件内容读进了xxe这个实体。
所以答案就出来了。
解码下就ok了。以下,是发现几篇好文,可以更深入的了解。
知乎某老哥的资料分享
添加链接描述
添加链接描述