我想了解这个查询的作用。
任何人都可以用语言向我解释以下查询的含义吗?
http://www.kachakil.com/pista.aspx?id_pista=1
and exists (select * from contrasena) and 100 >
(select count(*) from information_schema.columns, information_schema.columns T1,
information_schema T2)
本文提到了上述查询:使用重量查询的基于时间的盲SQL注入(作者:Chema Alonso ......)
我试图弄清楚每一段代码的含义,我希望有人会帮助我。
1)这是URL:
http://www.kachakil.com/pista.aspx?id_pista=1
2)此时我被困了(当然我知道select * from contrasena的意思(可能是反之亦然) 表,所以它意味着:选择表反对的所有记录)..但其余的?这是一个子查询,但我无法弄清楚其含义
and exists (select * from contrasena) and 100 >
3)这是一个选择,其目的是计算表格columns
的记录数量
属于数据库information_schema
的。表格columns
也被重命名为T1
,这是什么意思?:information_schema T2
我为我的问题道歉...我希望有人能帮助我......谢谢你们。
答案 0 :(得分:1)
您无法使用and
启动查询,因此可能这是查询的一部分。语法可能意味着从链接开始添加SQL查询。
exists (select * from contrasena)
有任何记录,则 contrasena
为真。
select count(*) from information_schema.columns, information_schema.columns T1,
information_schema T2
对我来说不是有效的语法,因为information_schema
不是表格。
我认为上面应该是select count(*) from information_schema.columns, information_schema.columns T1
。 tableA, tableB
表示tableA CROSS JOIN tableB
,因此会为tableA
和tableB
的每个记录组合生成一条记录。 information_schema.columns
是一个表,其中包含数据库中每列(在每个表中)的记录,描述该列。因此子查询实质上返回数据库中列数的平方。所以:
100 > (select count(*) from ...)
=> 100 > DB_COL_COUNT^2 (not valid SQL)
=> 10^2 > DB_COL_COUNT^2 (not valid SQL)
=> 10 > DB_COL_COUNT (not valid SQL)
=> 10 > (select count(*) from information_schema.columns)
第一行在含义方面等同于最后一行,但不是执行时间。
因此,如果数据库中的行数少于10行,则100 > ...
将返回true。
介于两者之间的and
只是意味着所有条件都必须为真。