bee-box xPath注入学习之靶场练习 – 作者:水木逸轩con

bwapp中,对应的xPath注入bugXML/XPathInjection (Search),这个漏洞的引用文件是xmli_2.php,直接先看下这份文件的源码:

image.png

首先从get请求中接收到表单的值,然后$genre送入到xmli中,进行一次字符过滤,由于这里使用的安全等级为最低级,所以没有进行任何过滤就返回了data。

image.png

接收到返回的data值之后,php文件加载xml文件,使用simplexml_load_file()函数,将xml文件的路径作为参数传值给该函数,将结果返回给$xml使用$xml中的xpath方法进行查询,参数为查询的路径,在一篇基础语法的讲解中就有,但是这次需要补充一个contains函数,这是一个php为xpath提供的字符串查找函数,具体的使用为contains(st-ring1,string2),表示如果 string1 包含 string2,则返回 true,否则返回 false。

image.png

如果查询到结果返回查询得到信息,进行遍历输出,如果没有查询到,那么输出提示信息。

php文件的内容说完了,接着看一下xml文件的结构。

image.png

image.png

根节点是heroes,接着是hero元素节点,每个hreo元素节点又拥有id、login、pas-sword、secret、movie、genre 6个子节点。

看下php文件中xpath的查询语句:

//hero[contains(genre,’$genre’)]/movie

这句xpath查询语句的意思是,如果genre节点的值中包含$genre变量的值,那么就把这些符合条件的节点的movie值输出到页面中,但是看不到login和password,看不到就去构造,构造xpath注入语句需要xpath查询语句中的一个“|”并查符号,返回并查集。

构造后的语句如下:

//hero[contains(genre,’22222′)] |//hero/login| a[contains(‘0′,’0’)]/movie

解释一下这句语句的意思,查询genre中有无22222字符串,无,查询所有hreo节点下login节点的值,有,返回结果集,查询a节点中存在后面的信息,a节点都不存在,查什么。

在url中?genre后面直接加22222′)] |//hero/login| a[contains(‘0’,’0,返回结果,注入成功。

image.png

来源:freebuf.com 2019-08-13 18:24:01 by: 水木逸轩con

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论