2013-08-05 3 views
1

В то время как пентестинг веб-сайта (да, с юридической точки зрения), вызывается 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' (без %). Любые предложения, почему это всегда удается с %?

+1

Какой язык программирования? Как заполнители ('?') Используются в кодах DB acces? Является ли это подготовленным заявлением в фоновом режиме или это код, фактически выполняющий замену строк. –

+0

Я бы предположил, что это обычный sql из oracle и что заменители заменяются значениями, указанными впоследствии. – user857990

+0

Это не «обычный SQL». Это часть какого-то языка программирования ('query = ...' определяет переменную на любом языке, который вы используете, - это ** не ** действительный оператор SQL). Маркеры параметров, такие как '?', Обычно используются в «подготовленных операциях», которые не подпадают под SQL-инъекцию. –

ответ

2

Чтобы найти инъекцию - это одно, а попросить сообщество написать вам эксплойт для нее - это другое.

Итак, если вы его нашли - просто сообщите. Для этого нужны пентесты.

+0

всегда лучше давать клиентам некоторые данные вместе с sqli, но это не то, что я просил, но я ищу объяснение _why_ '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' такой записи. – user857990