2crlf, спасибо, ваши советы бессценны! Попробую применить все, что смогу.
Сообщение от
None
Используй
and
, а не
or
.
К великому сожалению, я вынужден использовать именно
orвместо
and, поскольку из-за "ошибки сессии" не имею возможности возможности отличить обычный результат запроса от нулевого.
Да,
and удобнее. Но если я буду использовать
and- я получу
throwException("Ключ сессии неверный!"); в не зависимости от результатов запроса. Я писал об этом ранее.
Сообщение от
None
Для, простого, быстрого перебора...
Идея бинарного поиска просто гениальна, спасибо!
К сожалению совсем быстрым он не выйдет, т.к. ошибка 504, на которую я ориентируюсь, помимо прочего приводит еще и к отказу сервера на 10 минут. Угадали символ - ждем 10 минут пока сервер отвиснет, угадали еще один - опять 10 минут ждем.
Если я попробую автоматизировать этот процесс, рискую привлечь нежелательное внимание админов. все-таки столь большая нагрузка на сервер - плохо. Но другого выхода пока не вижу. Вот если б заставить работать оператор LIMIT... но он работать отказывается...
Сообщение от
None
Количество полей, для union based, можно подбирать так:
group by...
union select...
Не знаю почему, но такие инъекции приводят к ошибке:
Код:
id=99 group by 1 -- а так же group by любое другое число или набор чисел
id=99 order by 1 -- то же самое
id=99; Select 1 -- ошибка
id=99 union select null -- снова ошибка
id=99 LIMIT 0,50 -- опять ошибка
На локалхосте всё вышеперечисленное выполняется на ура! А вот на атакуемом сервере не хочет. Почему-то вообще ничего кроме эндов и оров НЕ ПРОХОДИТ.
Такое может быть, если инъекция производится не в хвост а в середину запроса (я ведь не знаю какой он там). Но это предположение опровергается тем, что запрос
id=99; обрабатывается корректно. Кроме того, я, на всякий случай, отбрасываю ввероятный хвост при помощи --, но и это не помогает.
Откуда растут ноги у проблемы понять не могу.