我正在尝试理解OR LDAP查询(特别是盲注LDAP)。
我是否正确地说,为了推断objectClass可以假设的值(这里U
),以下过滤器发送到LDAP服务器,是否正确?
(|(objectClass=void)(objectClass=U))(&(objectClass=void)(type=P*))
假设Web应用程序返回一个对象,我可以安全地说LDAP目录包含一个名为U的类别吗?...我的推理是否正确?
非常感谢
答案 0 :(得分:4)
您的过滤器无效。
你表示:
(|(objectClass=void)(objectClass=U))(&(objectClass=void)(type=P*))
你想要完成什么? -Jim
答案 1 :(得分:1)
我的推理是否正确?
没有。 '或'是'或'。正如你所写的那样,(i)对象类将是无效的(无论这意味着什么),或者(ii)对象类将是U.
过滤器的其余部分无效。有一个内部OR
过滤器和一个内部AND
过滤器,但没有外部操作符来说明它们的连接方式。例如,过滤器解析器在第一个))
停止时可能是合理的,因为没有有效的解析延续。
答案 2 :(得分:0)
如果您的目标是了解LDAP查询中的OR运算符(本身),我找到了文章" or-operator in LDAP queries"非常有帮助:
总结一下,"&"是"和"运营商,"!"是"不是"运营商, " |"是"或"运营商," *"是通配符。条件可以 嵌套在括号中。通配符不能用于DN属性。
示例:(|(givenName=foo*)(middlename=foo*)(mail=foo*))
实现了三倍OR
,将所有匹配项都显示回来,其中foo
出现在给定名称,中间名或邮件地址中。有关详细信息,请参阅帖子" LDAP multiple or syntax"。