Пошаговое руководство по eBay Riddle 2020

Эта задача была введена в Израиле для приема на работу в центр исследований и разработок eBay и требовала понимания в области инженерии, кодирования, некоторых криминалистических исследований и других технических ноу-хау, поэтому я нашел ее действительно интересной и разнообразной.

Примерно в 2 часа ночи на моем Facebook появился пост с подсказкой загадки, через день после того, как он был представлен, я почувствовал, что шансы невелики - как многие до меня пытались - но я не мог удержаться от решения. И после некоторого программирования и нескольких часов сна я завершил его утром (первое, как выяснилось позже), эта задача требует готовых решений, особенно для этапа 3.

Общий показатель успеха составляет менее 0 3% (44 из более чем 15 000).

В этом посте я поделюсь с вами подробными решениями, чтобы вы тоже могли им насладиться :)

Этап 1

На этом этапе представляется загадочное сообщение, помеченное как «зашифрованное»;

aHR0cHM6Ly9ybmQuZWJheS5jby5pbC9yaWRkbGUvbXpmYmFiZXdjZXlxeGFsdXIv

Мало кто из вас, возможно, уже знает, как это закодировано (и я скоро поделюсь трюком). Но для большинства, кто не знаком, разумно полагать, что декодированное сообщение является URL-адресом.

Однако нам не дают ключа для расшифровки. Таким образом, в случае, если он был зашифрован с помощью шифра подстановки, такого как шифр Цезаря или Атбаш (например, в загадках Цикада 3301), мы ожидаем, что префикс покажет некоторое повторение, чтобы соответствовать двойному t в http части - но это не так, и мы можем игнорировать этот путь шифрования для решения.

Так в чем же трюк, чтобы сразу распознать, как декодировать?

Внимательный заметил бы, что он состоит только из цифр и латинских строчных и прописных букв, поэтому декодирование Base-64 возможно, так что попробуем:

Оно работает! После разминки переходим к следующему этапу!

2 этап

На этот раз нам дается искаженное изображение и подсказка относительно 1f 8b.

Изображение кажется разделенным на две части, где первая часть - это URL, а вторая искажена.

Итак, давайте откроем изображение в HEX-редакторе и поищем 1f 8b:

Мы видим, что есть блок из REMOVE_ME, а затем из 1f 8b байтов.

Байты 1f 8b являются особенными, поскольку они обозначают подпись файла gzip-файла,

Более глубокий анализ показал, что файл был заархивирован в Unix-подобной ОС 13 октября 2020 года в 19:07:23.

Стоит сказать, что на самом деле файлы разделяют не их расширения (как хорошо известно пользователям Linux), а их «сигнатуры», которые являются первыми байтами.

Используя команду file в Linux, мы можем определить тип файла, используя тесты файловой системы, магические тесты и языковые тесты. При успешном первом тесте печатается тип файла.

Если такая подсказка в заголовке не указана, я бы использовал такую ​​утилиту, как binwalk поиск файлов, скрытых в файле изображения.

Такое binwalk выполнение, не зная намек, даст:

Это следует интерпретировать; в позиции 0x1400 существует файл gzip.

Итак, давайте скопируем часть, начинающуюся с 1f 8b, в другой файл и распакуем его.

Несжатое содержимое файла выглядит так:

Мы наблюдаем блок «случайных» байтов, а затем кучу нулей, это выглядит хорошо, поскольку для генерации такой последовательности требуется больше, чем совпадение.

Теперь давайте вспомним, что изображение состояло из двух частей и что вторая часть была искажена - пора вставить несжатую часть вместо блока REMOVE_ME и файла gzip после него.

Виола! при этом мы получим следующее изображение:

Это, конечно, наш URL-адрес для следующего и наиболее сложного этапа 3!

3 этап

На этот раз нам предлагается найти максимальный идентификатор продукта eBay, который составляет:

  • основной
  • Начинается и заканчивается одной и той же цифрой

Это волшебное число откроет дверь к финальной стадии!

Но как найти этот номер, не будучи заблокированным?

Как правило, диапазоны идентификаторов продуктов на eBay не являются непрерывными.

Таким образом, нахождение максимально допустимого идентификатора продукта в любом диапазоне не гарантирует, что в последнем диапазоне нет максимально допустимого идентификатора продукта или что наш диапазон является последним диапазоном.

Это требует некоторой нестандартной перспективы, поскольку мы не можем исследовать идентификаторы продуктов eBay, просматривая их напрямую (без блокировки).

Как мы можем узнать это число косвенным образом?

На помощь приходят роботы!

И когда я говорю о роботах, я не имею в виду ботов, наносящих DDOS-атаки серверам ...

… Но к robot.txt файлу, входящему в стандарт исключения роботов, который используется для связи с поисковыми системами, какие области следует игнорировать или сканировать.

Вот ссылка на содержимое файла eBay robots.txt (очень длинная, поэтому не встраивание напрямую).

Интересные части - это SITEMAPs.

Углубляясь в них, мы видим, что они относятся к файлам XML, которые включают zip-файлы.

Открывая карту сайта PRP, мы находим такие файлы, как PRP-0–1.xml.gz, которые содержат ссылки на продукты eBay.

После загрузки этих архивов мы можем приступить к поиску идентификаторов продуктов внутри них и фильтрации тех, которые действительны, и нахождению максимального:

Результат:

Встраивая 19041288221 в URL RnD, мы переходим к финальной стадии!

Последний этап

Этот этап самый веселый и похож на Escape Room, мы видим уютный офис eBay в Нетании и получаем указание «найти ключ».

Ключ находится в игровой комнате:

И щелкнув по нему:

Теперь мы можем написать eBay по электронной почте, что загадка разгадана!

Понравилась эта статья? Не стесняйтесь удерживать нажатой кнопку 👏 под 😀

Все соответствующие файлы и код доступны в моем репозитории GitHub.