Oracle SQL 注入,来自 dual 的 select 用户无法正常工作

Oracle SQL Injection, select user from dual is not working

我正在学习 SQL 注入。有一个常规声明是这样写的:

"select * from users where username = '" + getUsername() + "'" + " and " + "upassword = " + "'" + getPassword() + "'";

据我所知,可以通过提供以下密码来执行 SQL 注入攻击:

a' or '1' = '1

我将从数据库中获取所有 table 条目。但是当我尝试提供如下用户名时:

' or select user from dual where '1' = '1'--

我在 return 中一无所获。我的理解是我的用户名输入如上,常规语句将变为:

select * from users where username = '' or select user from dual where '1' = '1'--

这应该给我当前用户。 请问这里出了什么问题?

更新:

我稍微修改了一下就成功了:

' union select * from users--

现在我从数据库中得到了完整的用户名列表。

谢谢

select * from users where username = '' or select user from dual where '1' = '1'

在 Oracle 中不是有效的 SQL 语句。您试图通过将原始语句的 WHERE 子句放入不同的语句来替换整个 SELECT 列表,但这是行不通的。

祝你好运。

or select user from dual 不是文字字符串,您似乎正试图传递另一个查询。如果您想传递字符串文字,请使用单引号将其引用。