如何解决如何使Oracle 11g基于时间的SQL注入查询包括count*case count*
我尝试为我的研究创建基于时间的SQL注入示例查询
查询:
select case
when COUNT( * )>10
then ( select count( * )
from all_users A,all_users B,all_users C,all_users D,all_users E,all_users F
)
else 2
end
from col
where tname='BBS';
ERROR at line 1:
ORA-00937: not a single-group group function
({select count(*) from all_users A,all_users F
):这是对oracle11g进行一些延迟的繁重查询
如果BBS表的列数超过10,我想在数据库中看到一些延迟,谢谢您的帮助!
解决方法
您会收到错误消息,因为在查询的SELECT列表中,未聚合的列或标识符(在这种情况下为the subquery with all_users dictionary views
)与聚合的列(在这种情况下为COUNT( * )>10
)不能同时存在,除非非-汇总的列表在GROUP BY列表中。
因此,将您的查询替换为一个汇总的查询:
SELECT CASE
WHEN COUNT(*)>10
THEN MAX((SELECT COUNT( * )
FROM all_users A
CROSS JOIN all_users B
CROSS JOIN all_users C
CROSS JOIN all_users D
CROSS JOIN all_users E
CROSS JOIN all_users F))
ELSE 2
END AS result
FROM col
WHERE tname = 'BBS'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。