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
不是文字字符串,您似乎正试图传递另一个查询。如果您想传递字符串文字,请使用单引号将其引用。
我正在学习 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
不是文字字符串,您似乎正试图传递另一个查询。如果您想传递字符串文字,请使用单引号将其引用。