Показать сообщение отдельно

  #36  
Старый 19.07.2010, 21:47
Qwazar
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
С нами: 11020706

Репутация: 4693


По умолчанию

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/.