Как ключевое слово ORA-00923: FROM, не найденное там, где ожидается, будет уязвимо для SQL-инъекций? - PullRequest
0 голосов
/ 03 мая 2019

Предположим, у меня есть веб-приложение. Я не знаю, бэкэнд. Я отправляю несколько форм и, наконец, получаю сообщение об ошибке.

В нем говорится:

ORA - 0923: ключевое слово FROM не найдено там, где ожидается.

Итак, мы знаем, что это означает, что разработчик запрограммировал что-то похожее на это:

SELECT *

employees;

, в котором отсутствует ключевое слово from, или оно не там, где ожидается.

Итак, теперь у вас есть запрос

SELECT * employees;

Теоретически, как бы вы это впрыснули?

Ответы [ 2 ]

2 голосов
/ 03 мая 2019

Чтобы внедрение SQL было возможным, запрос должен иметь параметры или переменные связывания, передаваемые ему из веб-интерфейса. Этот запрос синтаксически некорректен без каких-либо параметров. Единственный способ задействовать этот запрос в сценарии внедрения SQL - это если веб-приложение приняло весь запрос, а затем выполнило его.

1 голос
/ 03 мая 2019

Скажем, база данных пытается выполнить простой оператор, такой как

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), которые могут вызвать такую ​​же ошибку, поэтому возможно, что вы наткнулись на одно из них.

Обычно этого должно быть достаточно для сообщения об ошибке.

...