Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ORA-00923:FROM关键字在预期的位置未找到,该关键字如何容易受到SQL注入的攻击?_Sql_Oracle_Code Injection - Fatal编程技术网

ORA-00923:FROM关键字在预期的位置未找到,该关键字如何容易受到SQL注入的攻击?

ORA-00923:FROM关键字在预期的位置未找到,该关键字如何容易受到SQL注入的攻击?,sql,oracle,code-injection,Sql,Oracle,Code Injection,假设我有一个web应用程序。我不知道后端。我提交了一些表单,最后收到一条错误消息 它说: ORA--0923:未在预期位置找到FROM关键字 因此,我们知道这意味着开发人员编写了类似的程序: SELECT * employees; 缺少from关键字,或者它不是预期的位置 现在您有了查询 SELECT * employees; 从理论上讲,您将如何注入这一点?要使sql注入成为可能,查询必须具有从web界面传递给它的参数或绑定变量。此查询在语法上不正确,没有任何参数。sql注入场景中涉及此

假设我有一个web应用程序。我不知道后端。我提交了一些表单,最后收到一条错误消息

它说:

ORA--0923:未在预期位置找到FROM关键字

因此,我们知道这意味着开发人员编写了类似的程序:

SELECT *

employees;
缺少from关键字,或者它不是预期的位置

现在您有了查询

SELECT * employees;

从理论上讲,您将如何注入这一点?

要使sql注入成为可能,查询必须具有从web界面传递给它的参数或绑定变量。此查询在语法上不正确,没有任何参数。sql注入场景中涉及此查询的唯一方法是web应用程序接受整个查询,然后执行它

假设数据库正在尝试执行以下简单语句

select 'smith' from dual;
开发人员没有使用绑定变量,而是将字符串“smith”(带引号)连接到语句中

select '' where 1=1'' from dual;
然后,黑客尝试一个名字,其中只有一个引号

select 'o'reilly' from dual;
这会导致应用程序出现错误

ORA-01756: quoted string not properly terminated
然后,他们尝试字符串
“where 1=1”
,该字符串被转换为语句

select '' where 1=1'' from dual;
有哪些错误

ORA-00923: FROM keyword not found where expected
还有其他关键字(如ORDER BY)也会出现同样的错误,因此您可能偶然发现了一个


一般来说,对于bug报告来说,这应该足够了

“我们知道这意味着…类似的东西”-不,我们不知道,真的。还有其他方法可以对SQL进行错误格式化以生成此错误。如果有一个后端查询通常可以工作,但您可以操纵输入以导致该错误,那么它看起来确实很脆弱,但这取决于后端查询的构造方式。你所展示的并没有真正的帮助-那个(无效的)查询本身并不是易受攻击的。但是你能在一个网站上用这样的错误进行SQL注入吗?如果我不使用插入垃圾数据的表单,就不会有错误。