В то время как пентестинг веб-сайта (да, с юридической точки зрения), вызывается SQL-инъекция, но я не вижу, как ее использовать в настоящее время. Строка запроса выглядит следующим образом, и точка вставки находится на первом _ после значений:Oracle DB - странная SQL-инъекция
query = 'SELECT item.a
FROM favitem item
WHERE (item.a =?) AND (item.b=?)', values = [123456789_, 987654321]
простой
, 1] UNION SELECT banner FROM v$version WHERE banner LIKE 'Oracle%'; --
не возвращает значения, но заявляет, что это был преуспевающим. Он всегда успешный, когда он включает в себя «%», даже на случайных строках, которые вряд ли совпадают вообще. Он возвращает ошибку, когда она заявляет LIKE 'Oracle'
(без %
). Любые предложения, почему это всегда удается с %
?
Какой язык программирования? Как заполнители ('?') Используются в кодах DB acces? Является ли это подготовленным заявлением в фоновом режиме или это код, фактически выполняющий замену строк. –
Я бы предположил, что это обычный sql из oracle и что заменители заменяются значениями, указанными впоследствии. – user857990
Это не «обычный SQL». Это часть какого-то языка программирования ('query = ...' определяет переменную на любом языке, который вы используете, - это ** не ** действительный оператор SQL). Маркеры параметров, такие как '?', Обычно используются в «подготовленных операциях», которые не подпадают под SQL-инъекцию. –