首先了解一下xml格式文档
xml:可拓展标记性语言,主要用来做两台不同体系系统计算机沟通用。
典型的xml格式如下所示:

图中我们可以看到,它显示显示了xml版本,然后就是编码格式,接着定义根节点<note>(可理解为标签作用),然后就是我们子节点<to>,<from>,<heading>,<body>等,最后闭合根节点。
然后介绍一些注意点:首先标签都是要闭合的,然后就是xml的标签严格区分大小写,属性值需要加""
接下来介绍一下entity实体,xml定义了两种entity实体,一种是在XML文档中使用,另一种在为参数在DTD文件中使用。

举个例子:
<? xml version="1.0" encoding="utf-8" ?>
<! DOCTYPE balabala [
<!ENTITY name="TOM" >
]>
<root>
<name>&name;</name>
</root>
实际引用的时候就经常会加上system
如下所示:


XML ATTACKS 1:

显然接受了xml的赋值后打印出来,由于未对xml字符串做任何处理,因此可有动作
构造的payload如下所示:

发现xml格式要求挺高的.....我自己看图构造的payload老是各种出错。。。。

XML ATTACKS 2:
先理解一下xpath:用于在xml文档查找信息的语言,可用于xml文档中文件元素和属性的遍历。
先贴上源代码:

题目中xml文档整理如下图所示:

从根节点到各个子节点一样一样都例举出来了,然后看源代码,可以发现源代码先定义了x这个xml变量,然后再将它 XML 字符串转换为 SimpleXMLElement 对象,并赋值给$res,然后查询了/users/user里面name的值为$name的,并返回其所有父节点的message里面的值。
然后执行查询,最后while循环显示查询的值。
payload构造过程如下:

接着构造永真语句

接着查询当前节点的兄弟节点:

然后查询password

最后推荐一篇文章:
http://www.freebuf.com/sectool/169122.html
网友评论