我正在实验室中测试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
答案 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';