区分大小写的HQL注入选择

时间:2018-03-30 12:24:35

标签: hql sql-injection case-sensitive

我是一个pentester,发现了一个HQL注入点。我可以提取用户的密码哈希值,但我必须使用或多或少的盲选select语句,我在其中放置了一个额外的参数:

从DB中选择count(userName),其中userName =' admin'和密码一样' INJECT%' AND' 1' =' 1

INJECT我只是循环遍历所有可能性,如果他能找到以某事开头的密码,则会得到是或否。粗体部分是我完全可以控制的输入。

现在我的问题是,这类查询不区分大小写,而哈希区分大小写。 无论如何,我可以确保只从这个注入点执行区分大小写的查询? (所以除此之外我不能执行HQL或SQL查询)。

1 个答案:

答案 0 :(得分:0)

查询是否区分大小写不是LIKE运算符或=或其他字符串函数的固有特征。

它与被比较的整理字符串有关。也就是说,如果比较中的任何一个字符串是一个字符串值,并且区分大小写,那么比较将区分大小写。

如果可以注入任意SQL表达式,则可以注入一个表达式,将该字符串转换为区分大小写的排序规则。

示例:SQL Case Sensitive String Compare

根据您使用的SQL数据库的品牌,语法可能会有一些差异。您没有说明您正在使用哪个数据库(除非您是那些说" SQL"当您的意思" Microsoft SQL Server")时的那些Microsoft用户之一。 / p>