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