freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

bee-box xPath注入学习之靶场练习
2019-08-13 18:24:01

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


# web安全 # xpath注入
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者