这两个查询的意思(sql注入)
Meaning of these two queries (sql injection)
有人可以解释为什么这两个查询(有时)会导致错误吗?我用谷歌搜索了一些解释,但其中 none 个是正确的。我不想修理它。此查询实际上应该用于 SQL 注入攻击(我认为基于错误的 sql 注入)。触发的错误应该是 "duplicate entry"。我试图找出为什么他们有时会出现错误。
谢谢。
select
count(*)
from
information_schema.tables
group by
concat(version(),
floor(rand()*2));
select
count(*),
concat(version(),
floor(rand()*2))x
from
information_schema.tables
group by
x;
好的,我要 post 一个答案 - 这更像是对问题本身的框架挑战。
基本上:这个查询很傻,应该写;找出应该做什么并以有意义的方式重写它。
查询当前做什么?
它看起来像是在获取当前数据库中表的计数...除了它是按计算列分组的。该列看起来像是 Version() 并向其附加“0”或“1”(随机选择。)
那么最后的结果呢?两行,每行都有一个数值,其总和 加起来 是当前数据库中表的总数。如果有 30 张桌子,您可能会获得一次 13/17,下一次获得 19/11,然后是 16/14。
我很难相信这就是查询应该要做的事情。因此,与其仅仅尝试修复 "error" - 深入挖掘并找出它 应该 返回的数据 - 然后重写 proc 来完成它。
第二个似乎在试图猜测注入受害者使用的是哪个数据库。
第二个给我这个:
+----------+------------------+
| count(*) | x |
+----------+------------------+
| 88 | 10.1.38-MariaDB0 |
| 90 | 10.1.38-MariaDB1 |
+----------+------------------+
有人可以解释为什么这两个查询(有时)会导致错误吗?我用谷歌搜索了一些解释,但其中 none 个是正确的。我不想修理它。此查询实际上应该用于 SQL 注入攻击(我认为基于错误的 sql 注入)。触发的错误应该是 "duplicate entry"。我试图找出为什么他们有时会出现错误。
谢谢。
select
count(*)
from
information_schema.tables
group by
concat(version(),
floor(rand()*2));
select
count(*),
concat(version(),
floor(rand()*2))x
from
information_schema.tables
group by
x;
好的,我要 post 一个答案 - 这更像是对问题本身的框架挑战。
基本上:这个查询很傻,应该写;找出应该做什么并以有意义的方式重写它。
查询当前做什么?
它看起来像是在获取当前数据库中表的计数...除了它是按计算列分组的。该列看起来像是 Version() 并向其附加“0”或“1”(随机选择。)
那么最后的结果呢?两行,每行都有一个数值,其总和 加起来 是当前数据库中表的总数。如果有 30 张桌子,您可能会获得一次 13/17,下一次获得 19/11,然后是 16/14。
我很难相信这就是查询应该要做的事情。因此,与其仅仅尝试修复 "error" - 深入挖掘并找出它 应该 返回的数据 - 然后重写 proc 来完成它。
第二个似乎在试图猜测注入受害者使用的是哪个数据库。
第二个给我这个:
+----------+------------------+ | count(*) | x | +----------+------------------+ | 88 | 10.1.38-MariaDB0 | | 90 | 10.1.38-MariaDB1 | +----------+------------------+