在SQL查询中包括静态值

时间:2018-12-19 20:01:53

标签: java mysql sql

我正在实验室中测试SQL注入,需要使用UNION合并两个SQL查询以绕过身份验证,所以我想知道是否有一种方法可以在第二个查询中设置静态值,以便我的JAVA代码可以check只会检查我以静态密码发送的用户密码:SQL查询应该是这样的:

 SELECT * FROM users WHERE user = 'user1' UNION SELECT user AS 
 user1, password AS password FROM users ;'

我的JAVA代码报告错误:

 You have an error in your SQL syntax; check the manual that 
 corresponds to your MySQL server version for the right syntax to 
 use near

2 个答案:

答案 0 :(得分:2)

使用工会
您必须选择列的相应数字类型,例如:

 SELECT user, password
 FROM users 
 WHERE user = 'user1' 
 UNION 
 SELECT 'user', 'password' 
  ;

答案 1 :(得分:2)

首先,消除使用SELECT *以确保两个查询返回相同数量的列。然后,您可以在第二个查询中对您的静态值进行硬编码。

SELECT user, password
    FROM users
    WHERE user =  'user1'
UNION
SELECT 'user', 'password';