假设我有一个 Web 应用程序。我不知道后端。我提交了一些表格,最后得到一条错误消息。
它指出:
ORA--0923: 在预期的地方找不到 FROM 关键字。
因此,我们知道这意味着开发人员编写了类似于以下内容的代码:
SELECT *
employees;
缺少 from 关键字,或者不在预期的位置。
所以现在你有了查询
SELECT * employees;
理论上你会如何注入这个?
假设我有一个 Web 应用程序。我不知道后端。我提交了一些表格,最后得到一条错误消息。
它指出:
ORA--0923: 在预期的地方找不到 FROM 关键字。
因此,我们知道这意味着开发人员编写了类似于以下内容的代码:
SELECT *
employees;
缺少 from 关键字,或者不在预期的位置。
所以现在你有了查询
SELECT * employees;
理论上你会如何注入这个?
为了使 sql 注入成为可能,查询必须具有从 Web 界面传递给它的参数或绑定变量。如果没有任何参数,此查询在语法上是不正确的。此查询可能涉及 sql 注入场景的唯一方法是 Web 应用程序接受整个查询然后执行它。
假设数据库正在尝试执行一个简单的语句,例如
select 'smith' from dual;
开发人员没有使用绑定变量,而是将字符串“smith”(带引号)连接到一个语句中
然后黑客尝试使用单引号的名称
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)会给出相同的错误,因此您可能偶然发现了一个。
一般来说,对于错误报告来说,这应该足够了。