XPath injection

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XPath injection相关的知识,希望对你有一定的参考价值。

参考技术A Edit by Qsaka

本文以HCTF2015 injection一题为例,来分析 XPath 注入攻击。

题目源码如下

XPath 是一门在 XML 文档中查找信息的语言。

在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或称为根节点)。节点之间存在父、子、先辈、后代、同胞关系,以t3stt3st.xml为例
根节点 <root1> 、元素节点 <user><username><key><hctfadmin> 、属性节点 name='user1'
<root1> 是 <user> 和 <htcfadmin> 的父节点,同时也是 <user><hctfadmin><username><key> 的先辈。 <username> 和 <key> 是同胞节点。

通过在路径表达式中使用“|”运算符,可以选取若干个路径。

从index.php源码可知XPath查询语句为 $query="user/username[@name='".$user."']" , 且 $user 经过关键字替换。但是黑名单 $re 中都为SQL关键字,所以并不影响对XPath进行注入。我们可以构造payload如 ']|//*|zzz[' 来进行注入,获取文档中的所有元素节点。

HCTF2015 writeup
XPath基础教程

javax.inject.Inject 和 com.google.inject.Inject 有啥区别?

【中文标题】javax.inject.Inject 和 com.google.inject.Inject 有啥区别?【英文标题】:What is the difference between javax.inject.Inject and com.google.inject.Inject?javax.inject.Inject 和 com.google.inject.Inject 有什么区别? 【发布时间】:2012-02-04 02:38:44 【问题描述】:

我开始使用 Google Guice。

我有一个简单的问题:

javax.inject@Inject注解和com.google.inject@Inject有什么区别?

谢谢。

【问题讨论】:

org.jboss.beans.metadata.api.annotations.Inject@Inject 怎么样? :p 【参考方案1】:

javax.inject 是源自 google 工作(和其他人)的规范

区别可见Google Guice Wiki

【讨论】:

以上是关于XPath injection的主要内容,如果未能解决你的问题,请参考以下文章

xpath定位器

xPath 用法总结整理

xpath语法

Xpath()语法

如何获取元素的 xPath,并再次从 xPath 检索元素

Python爬虫教程-21-xpath