什么是Xpath注入?
XPath语言是一种用于在XML文档中定位元素和属性的语言,可以进行类似于SQL注入的攻击,即XPath注入。XPath注入是指攻击者通过构造恶意的XPath查询语句,从而使应用对数据库进行不安全的查询,进而实现非法的数据查询和甚至篡改数据的攻击行为。
攻击者可以通过构建XPath语句来绕过应用程序验证,从而获取权限和数据。攻击者可以借助注入攻击来突破身份验证、读取其他用户的数据或删除数据,甚至可以对整个系统造成破坏性影响。
Xpath注入主要针对的数据应用??
XPath注入攻击是针对带有XML数据的应用程序的。因为XPath是一种用于在XML文档中定位元素和属性的语言,具有和SQL语言相似的特点。当开发者使用XPath语言定位XML文档中的元素和属性时,往往存在代码编写不规范、查询语句缺乏过滤、输入数据可控等问题,从而导致XPath注入攻击的风险。
Xpath定位
XPath定位是指利用XPath查询语句定位XML文档中的元素和属性。在XPath定位中,可以采用以下的语法规则来查询XML文档中的元素和属性:
表达式 | 描述 |
---|---|
nodename | 选取此节点的所有子节点。 |
/ | 从根节点选取。 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 |
. | 选取当前节点。 |
… | 选取当前节点的父节点。 |
@ | 选取属性。 |
XPath 通配符
XPath 通配符可用来选取未知的 XML 元素。
通配符 | 描述 |
---|---|
* | 匹配任何元素节点。 |
@* | 匹配任何属性节点。 |
node() | 匹配任何类型的节点。 |
Xpath查询语句
$query="user/username[@name='".$user."']";
Xpath注入的用法
1、注入点:URL、表单或其它信息上附带恶意的 XPath 查询代码
2、注入漏洞验证:输入id=1'、id=-1看页面是否返回报错信息
3、注入万能公式:id=1' or 1=1 or ''='
4、万能访问xml文档所有节点的payload: ']|//*|//*['
']|//*|//*[':我的理解是将查询语句闭合,从当前节点选择文档中的节点匹配所有元素的节点