java—在sql查询中包含静态值

e0bqpujr  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(216)

我正在实验室测试sql注入,需要使用union组合两个sql查询以绕过身份验证,因此我想知道是否有方法在第二个查询中设置静态值,这样我的java代码将只检查作为静态密码发送的用户密码: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
laawzig2

laawzig21#

使用并集
必须选择列的相应编号类型,例如:

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

edqdpe6u2#

第一,杜绝使用 SELECT * 以确保两个查询返回相同的列数。然后可以在第二个查询中硬编码静态值。

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

相关问题