0

我想了解这个查询的作用。

谁能用语言向我解释以下查询的含义?

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)   

上述查询在本文中提到:Time-Based Blind SQL Injection using Heavy Queries(作者:Chema Alonso...)

我正在尝试弄清楚每段代码的含义,我希望有人能帮助我。

1)这是网址:

http://www.kachakil.com/pista.aspx?id_pista=1

2)此时我被卡住了(当然我知道 select * from contrasena 的含义(可能 contrasena 是一个表,所以它的意思是:从表 contrasena 中选择所有记录)..但是剩下的呢?这是一个子查询但是我想不通是什么意思

and exists (select * from contrasena) and 100 >

columns 3)这里是一个选择,其目的是计算属于数据库的表有多少条记录information_schema。该表columns也被重命名为T1,这是什么意思?:information_schema T2

我为我的问题道歉......我希望有人能帮助我......非常感谢

4

1 回答 1

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 T1tableA, tableB表示,因此为来自和tableA CROSS JOIN tableB的每个记录组合生成一条记录。是一个表,其中包含数据库中每一列(每个表中)的记录,描述该列。所以子查询本质上是返回数据库中列数的平方。所以:tableAtableBinformation_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)

第一行在含义上等同于最后一行,但不是执行时间。

因此100 > ...,如果数据库中的行数少于 10,则返回 true。

中间的ands 仅表示所有条件都必须为真。

于 2013-01-27T12:24:46.373 回答