Какая хеш-функция может быть? - PullRequest
2 голосов
/ 07 июля 2010

У меня есть несколько строк и несколько их хэшей, но я не знаю, какая хеш-функция используется. Есть идеи?

String        hash

NN34W    f8b46bcdc3b3c92
EM3M3    d8015ca876fd051
HXDKD    a740e97464e5dfe
AKREJ    aa7aa2dadfcbe53
3bNMK    0f11440639191d9

Edit:

Спасибо за ответы, это хэш капчи.

https://registracia.azet.sk/

Если вы проверите URL изображения с картинки, в конце будет значение HASH. Это

На сервер отправляются в HTTP POST отправляются ТЕКСТ: (P92M4) и HASH (72fec89a2e0ade2) и другие значения.

Мне нравится знать, как вычислять хеш TEXT P92M4 и управлять с помощью значения HASH, которое отправляется на сервер.

Потому что мне нравится создавать собственную систему каптч для моего школьного проекта, поэтому я сначала анализирую ситуацию и слабости.

Ответы [ 2 ]

5 голосов
/ 07 июля 2010

Как я понимаю в вашей ситуации, запрос POST отправляет и "текст", и "хеш" на сервер CAPTCHA. Затем он использует любую хеш-функцию, которую они используют для хеширования вашего текста, проверяет, соответствует ли он хешу, и решает, успешно ли вам это удалось. Предположительно, сервер отправляет вам изображение, а также хеш, а затем вы вводите текст.

Таким образом, если бы вы выяснили функцию хеширования, вы бы полностью сломали эту систему CAPTCHA: все, что вам нужно было бы сделать, это хешировать любую строку, используя их функцию хеширования, а затем при отправке запроса POST игнорировать хеш они отправили вас и просто отправили им ваш вычисленный текст и хэш-пару. Таким образом, вы можете очень легко автоматизировать успешное прохождение теста CAPTCHA.

Чтобы проиллюстрировать, насколько трудным может быть «обращение» хеша, рассмотрим следующий хеш, который они вполне могут использовать:

  • Разделите ТЕКСТ на чередующиеся буквы: таким образом, ABCDE становится ACE и BD
  • md5 две половины с использованием солей "fj49w0utw4a" и "r8h3wlsd"
    • md5 ("fj49w0utw4a". "ACE"): 115c05f0e5300f958ba01caa64b989f
    • md5 ("r8h3wlsd". "BD"): 74eecae86ef46382eb95443a1b1fa8f5
  • Возьмите каждый 3-й символ первой строки и каждый 4-й символ второй и чередуйте их, пока не получите 15 символов.
    • 115c05f0e5300f958ba01caa64b989f становится 55e09b1ab9
    • 74eecae86ef46382eb95443a1b1fa8f5 становится e8425af5
    • Конечное хеш-значение для "ABCDE": 5 e 5 8 e 4 0 2 9 5 * 1 036 * B * 1 037 * а * 1 038 * 1 F а * ** +1042 тысячу сорок-один *

Нет никакого способа, которым вы когда-либо собираетесь его реконструировать.


UPDATE
Обратите внимание, что CAPTCHA, как описано выше (и реализовано на этом сайте), крайне небезопасны, поскольку для них требуется знать только одну действительную комбинацию текста / хеша

Чтобы продемонстрировать, используйте Firebug или его эквивалент и перейдите в область CAPTCHA формы. Мы будем редактировать некоторые скрытые значения.

Существует несколько способов уменьшить эту уязвимость. Как предположил Тангрс, вы можете сохранить значение хеш-функции в переменной сеанса, чтобы клиент не мог им манипулировать. Менее элегантным, но также эффективным является сохранение представленной CAPTCHA в базе данных и не допускать дублирования CAPTCHA, как это реализовано по ссылке в вопросе. Это нормально, пока вы не начнете исчерпывать неиспользованные капчи и не столкнетесь с коллизиями.

1 голос
/ 07 июля 2010

Кажется, меньше, чем любой хэш отрасли ... возможно, это уместно?Немного больше информации помогло бы, хотя, на каком языке, откуда вы взяли это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...