Mysql 联合表名称错误
我想知道如何使用工会的一方而不是另一方。请看下面的SQL查询:Mysql 联合表名称错误,mysql,sql,sql-injection,Mysql,Sql,Sql Injection,我想知道如何使用工会的一方而不是另一方。请看下面的SQL查询: SELECT * FROM users WHERE username = 0 and 1=2 UNION SELECT table_name,2,3 from information_schema.tables where table_schema='sqlhack' 现在,当我将其输入到phpMyAdmin以测试查询时,我得到一个错误,即信息架构中没有名为users的表,但是当我只有以下内容时: SELECT table_
SELECT * FROM users WHERE username = 0 and 1=2
UNION
SELECT table_name,2,3 from information_schema.tables where table_schema='sqlhack'
现在,当我将其输入到phpMyAdmin以测试查询时,我得到一个错误,即信息架构中没有名为users的表,但是当我只有以下内容时:
SELECT table_name,2,3 from information_schema.tables where table_schema='sqlhack'
我得到了期望的结果,即所有属于sqlhack的表。
所以我想知道如何才能使它只执行第二个select查询?或者不获取第一个SELECT查询的错误
我正在关注这个网站,但如果这有助于澄清的话,我会使用我自己的数据库。您的第一个
选择
正在尝试从表用户中进行选择。第二个验证表sqlhack
是否存在;它不会验证用户是否存在。我通常远离信息schema.tables,因为它们很少有我想要的所有详细信息
使用特定于T-SQL的命令测试表的存在性
-- Does the schema.table exist? NULL if not, otherwise a number
select OBJECT_ID('sqlhack.users', 'Table') as my_id
只需运行第二个查询。如果您不想使用它,为什么要包括第一个?您有用户表吗?如果有,请使用信息\u模式。users@GordonLinoff它用于sql注入,第一部分用于正常使用。我首先使用的是phpMyAdmin,所以这不是我的编码问题,而是我的代码statement@Loc我不知道这就是为什么会出现错误,但这不是我试图在表中搜索并查找与sqlhack数据库相关的所有表的重点。如果可能的话,我如何使它同时验证这两个表?只需运行选择表\u name,2,3从information_schema.tables中的table_schema IN('sqlhack','users')
好吧,这个表真的存在吗?不,但它不应该存在,我不想在information_schema.users中搜索,因为这个不应该存在于我的模式中。您正在运行SELECT*FROM users…
。该用户
表是否存在?如果没有,则无法对其执行选择。