2018-05-20-xml attacks

作者: 最初的美好_kai | 来源:发表于2018-05-20 15:26 被阅读12次

首先了解一下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

相关文章

网友评论

    本文标题:2018-05-20-xml attacks

    本文链接:https://www.haomeiwen.com/subject/qzqtjftx.html