Blind SQL + Benchmark (2 запроса на символ)
Допустим у нас есть слепая скуля (но такая, что хоть какой-то вывод возможен), на что можем влиять:
страничка:
1) страница приходит в обычном состоянии (false)
2) страница приходит изменённой (true)
ответ от сервера:
1) пришёл сразу (false)
2) пришёл с задержкой (true)
Таким образом, влияя на эти 2 параметра, можно задать 4 состояния
Делаем вот что:
1) Берём алфавит (допустим 0123456789abcdef), и делим его на 4 группы (0123),(4567),(89ab),(cdef).
2) Составляем табличку истинности:
№|A|B
_|_|_
1|0|0
2|0|1
3|1|0
4|1|1
где:
№ - номер группы к которой принадлежит данный символ,
A - изменить ответ или нет
B - включать бенчмарк или нет
3) Вычисляем при помощи find_in_set номер группы к которой принадлежит данный символ, кодируем его согласно таблице выше
4) на клиенте получаем группу символов, в качестве алфавита уже берём только её и идём на шаг 1.
Т.е. для хеша md5 на каждый символ потребуется 2 запроса. (По теории вероятности бенчмарк сработает лишь на половине из них, т.е. в принципе работать должно быстро)
Практическая часть и реализация тут:
https://rdot.org/forum/showthread.ph...age=2#post1938
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..
Мой блог:
http://qwazar.ru/.