我目前正在调查影响Joomla CMS的最新漏洞。
您可以找到这里描述了该漏洞,但是我的问题仅仅是基于错误的SQL注入,并且与上下文无关。
上面的示例运行得很好:随机执行它几次会产生Subquery returns more than 1 row和预期的Duplicate entry '::joomla@localhost::0' for key 'group_key'错误消息,泄漏Joomla :)使用的MySQL用户!
但是,我不能访问所有的数据库内容。有些字段总是会生成Subquery returns more than 1 row,并且不会泄漏它们包含的信息。
当直接连接到MySQL提示符时,此限制是可重复的。
在我读到的关于这个问题的文章中,我没有遇到任何关于这个限制的描述(非常恼人)。是什么已知的东西吗?它是专门针对我的MySQL版本(5.6.14-企业-商业-高级)吗?有什么解决办法吗?
发布于 2015-10-29 11:52:06
以下是哪些请求使用此注入工作,哪些请求不工作,这些请求与它们的列类型关联:
users()、database()等。@@version等系统变量。*_users表中的短列内容,如*id (int(11))、email (varchar(100))、password (varchar(100))、registerdate (datetime)等。不起作用的
*_users表) name (varchar(255))、username (varchar(150))、params (文本)、otpKey (varchar(1000))等。这里很明显,使基于错误的SQL注入正常工作的原因是字段大小(不管内容大小,列可能是空的)。
然后,解决方案变得非常清晰:向SQL注入添加一个substr()调用,现在整个数据库内容可以访问:)!
http://example.com//index.php?option=com_contenthistory&view=history&list[select]=(select col.a from (select count(*), concat(0x3a, 0x3a, (select substr(name,1,100) from jml_users limit 0,1), 0x3a, 0x3a, floor(rand()*2)) a from information_schema.columns i1 group by a) col),'A' union select uc.id拥有:)!(不过,我仍然不知道这个限制是一般性的还是仅限于这个版本的MySQL服务器)。
https://security.stackexchange.com/questions/103937
复制相似问题