Русский
Русский
English
Статистика
Реклама

Стеганография

Из песочницы Мамкины хацкеры или мой путь в CTF

18.09.2020 18:11:01 | Автор: admin
Это был далекий 2014 год, когда еще зеленые, недавно поступившие в универ, парни, услышали, что есть какие-то соревнования с завлекающим названием Capture the flag (сокр. CTF, в переводе Захват флага).


Фото с сайта securitylab.ru к новости про Facebook CTF 2016

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

Итак, давайте теперь я вам немножко поведаю:

1. CTF (Capture the flag или Захват флага) командные соревнования (изредка бывают личными) в области компьютерной (информационной) безопасности.

2. Формат проведения :

2.1. Task-based (или jeopardy) игрокам предоставляется набор тасков (заданий), к которым требуется найти ответ (флаг) и отправить его.
Пока все более чем просто, обычные правила, но только все задания в этом формате разделены на категории (расскажу про основные):

Криптография задания связаны с расшифровкой сообщений, защищенных различными алгоритмами (от самых простейших до современных шифров);
Стеганография наука о тайной передаче информации путем сокрытия самого факта передачи. Следовательно, вам нужно найти, как именно и какую информацию передали (очень интересная тема, позже накатаю статей);
Web поиск уязвимостей на серверах и сайтах (используются специально развернутые сервера и сайты на них, не ведется взлом открытых платформ);
Реверс-инжиниринг исследование кода программного обеспечения, дальше методы зависят от задания (очень муторная тема, для усидчивых);
Recon моя любимая тема поиска информации по открытым источникам (OSINT, разведка). Тема, которой тоже будет посвящен отдельный блок статей;
Joy развлекательные задачи разнообразной тематики.
2.2. Attack-Defense (или classic) каждая команда получает выделенный сервер или небольшую сеть для поддержания её функционирования и защиты. Во время игры команды получают очки за корректную работу сервисов своего сервера, защиту своей информации и за украденную информацию (она же флаги) с серверов соперников.

3. Уровень соревнований
Международный уровень: самое престижное соревнование DEF CON CTF, которое ежегодно проходит в Лас-Вегасе и собирает сильнейшие команды мира (берет свое начало с девяностых годов).

Россия: имеет активное развитие с 2009 года. Проводятся множество локальных соревнований (в ВУЗах, городах, округах) в различных режимах.
Самый масштабный CTF в России RuCTFE, победа в котором даёт возможность попасть на DEF CON CTF.
Интересный факт: В 2014 году в RuCTFE сражалось уже 322 команды из различных стран мира!

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

Следом, мы начали изучать сайт ctftime.org тут размещено расписание всех соревнований (по всему миру) и рейтинг команд-участников (зарегистрированных на сайте).

Мы адекватно понимали, что Attack-Defense нам пока не светит, но порешать какие-нибудь задания в формате Task-based, чтобы набраться опыта, мы были готовы.

Первый в жизни CTF


Нам несказанно повезло, что один из ближайших CTF'ов был русский, а именно School CTF (организатор команда SiBears), в котором было разделение между школьниками и не школьниками и указано время проведения 8 часов (кажется это было именно так).

Конечно же, было очень важно зарегистрироваться Но как? Какое название команды?

Как-то так получилось, что именно я организовал наше участие и стал негласным капитаном команды.

Это же был первый раз, а мы понимали, что морское ДНО это как раз мы в этих соревнованиях Собственно, не долго думая, я предложил и здравствуйте, Мы команда DnO.

Мы вооружились ноутбуками, ручками, блокнотами и переживали, что нам еще может понадобиться.

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

Но, спасибо Google, мы постепенно начали разбираться что означает то или иное слово и наконец начали гуглить не просто слова, а уже пытаться решать задания и, стоит отметить, у нас это даже получалось


Предварительные результаты

Стоит отметить, что мы были на кураже, у нас многое получалось и мы чувствовали, что старт был более чем идеален. Как вы можете увидеть на предварительных результатах, мы держали 6 место, но потом сместились примерно на 10 (но с учетом количества команд, мы уже не думали об этом, а отмечали успешный старт).

Конечно же, следующий CTF, в котором мы решили участвовать был какой-то иностранный, но, несмотря на то, что мы понимали все задания, у нас абсолютно ничего не получалось решить, поэтому там мы если что-то и сделали, то в лучшем случае одно задание.

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

Что за команда DnO?


Время шло, мы участвовали в различных CTF'ах и набивали руку, нашли несколько очень полезных платформ с тасками, благодаря которым можно развиваться в этом направлении (перечислять их не буду, можно спокойно найти в гугле).

Вдруг, произошло интересное событие, мы собрались на очный CTF (до этого всегда выступали только online), кажется это был QCTF и проходил он в Москве, а точнее в МИРЭА. Естественно, это совсем другая энергетика, вокруг все давит, потому что ты не сидишь себе на диване спокойно, но ощутить это тоже хочется.


Фото одного из заданий QCTF

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

Как итог, команда DnO из 20 команд заняла почетное 4 место (ну вы понимаете как было обидно), но когда мы вернулись в универ, нам сказали, что это обязательно надо рассказать всем, как там называется ваша команда?

Этот вопрос поставил нас в тупик Конечно, парни особо не загонялись и такие: Ну ты же предлагал DnO, теперь давай придумывай расшифровку, чтобы весь ВУЗ над нами не ржал в голос.

После часа штудирования словаря, придумал единственную адекватную расшифровку как Destroy Network of Opponent, что переводится как Уничтожить сеть противника (спасибо, что предлоги не учитываются в сокращениях).

С тех самых пор мы следовали старой поговорке про судно Как назвали, так и поплыло.

Первая победа пополам


В очередной раз мы решили попробовать свои силы на очном CTF, только в этот раз было решено посетить город-герой Волгоград.

Наша команда уже была на опыте, мы разделились по направлениям и каждый участник команды развивался в одном основном направлении и одном/двух смежных, чтобы быть готовым помочь/подменить своего товарища. Но, конечно, мы всё еще были далеки до хороших познаний в этих областях.


Команда DnO в Волгограде

Честно говоря, уже даже не могу описать тех эмоций, которые мы испытывали, а всё из-за того, что было 2 лидирующие команды мы шли очко в очко, решая чуть ли не одни и те же задания.

Финальный свисток и мы Вторые? Как? Но ведь У нас одинаковое количество очков, но команда Life сдала последний флаг раньше нас по времени, из-за чего мы заняли второе место Команда DnO впервые была близка к победе, но упустила её в последний момент.


Финальный скорборд соревнований VolSUCTF

Первый Кубок CTF России


Прошло пару месяцев, мы не оставляли попытки добиться высоких результатов в различных online CTF'ах, но всё было тщетно, а тут мы еще узнали, что идёт набор на ПЕРВЙ Кубок CTF России, а отбор на него идет по результатам отдельно выбранных организаторами CTF, проходивших с начала года.

Естественно, среди них был и VolSU CTF, в котором мы успешно заняли 2 место и, по сути не проходили на этот безумно интригующий ПЕРВЙ Кубок

Однако, после мониторинга обстановки, нам стало известно, что команда Life, с которой мы поделили 1 место, участвует в данном мероприятии как организатор Ииииииииии, да, команда DnO приглашается на I Кубок CTF России, как призер VolSU CTF.

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

Пропуская все нюансы подготовок, мы приезжаем в Инновационный центр Сколково, где собрались 20 лучших команд со всей страны.


I Кубок CTF России. День первый. Task-based.

Нас встречают, выдают приколюхи (наклейки, футболки и самое главное, ФЛАЖКИ!)


Тот самый, заветный флаг команды DnO

Быстрая жеребьёвка и мы узнаём какой у нас номер стола, ушли готовиться. Оперативно развернув свои печатные машинки, выступление организаторов мероприятия, где мы узнаём интересные новости, а именно:

1. Кубок проходит в 3 этапа за 2 дня;
2. Этап 1 Task-based (участвует 20 команд, проходят в следующий этап 10 лучших);
3. Этап 2 Attack-Defense (участвует 10 оставшихся команд, в следующий этап проходят 4 лучших);
4. Этап 3 Финал. (участвуют 4 команды, что будет происходить тайна, покрытая мраком...).

Не заглядывая вперед, начали готовиться к первому этапу сие мероприятия, которое обещало быть увлекательным

Итак, ЭТАП 1, начали.

Изнурительные 8 часов работы с приостановкой соревнований на обед. Мы выкладывались на полную, показывали лучшую командную работу, которая была когда-либо и за это получали заветные флаги, очки, которые могли вывести нас в следующий раунд.

Забыв про Scoreboard (таблицу результатов), мы работали до последней секунды данного этапа и, не без везения, мы занимаем 6 строчку в таблице.


Scoreboard после 1 тура Кубка CTF России

За нашим столом гробовое молчание Никто не верит, что мы не просто прошли во второй этап, мы прошли уверенно.

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

Это явно был наш день, мы его заслужили.Никаких разборов, только еда и хороший отдых перед вторым днём соревнований.

Да, мы понимали, что очень слабы в Attack-Defense, но всё равно были заряжены трудиться до последнего.

Итак, ЭТАП 2, начали.

Когда мы сели за стол и снова развернули наши печатные машинки, удивлению не было предела


Наше задание второго этапа. Своя криптоферма.

Мы увидели эту, не сказать что огромную, коробку и сколько в ней всего, как там всё устроено и осознали, что попали по самое небалуй

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

Стоит отметить, что наши старания не прошли мимо, мы все же подняли сервер и даже получили некоторую часть флагов, но, естественно, этого было мало, другие команды были куда более подготовлены

Итог, 9 место на втором этапе. Конечно, есть небольшое расстройство, но задачу минимум мы выполнили, чем стоило гордиться.


Scoreboard 2 этапа.

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

До такого уровня, нам явно было далековато

Именно этим Кубком закончилось моё выступление в этой команде и как капитана и как участника Я выпустился, другие ребята взяли всё на себя, которые были заряжены и готовы идти дальше.

Но это уже совсем другая история...

Отдельно хочется поблагодарить организаторов таких соревнований (различные CTF-команды, а также организацию АРСИБ), наставникам, кураторам, моим друзьям, выступавшим за эту команду, и ребятам, выступающим за другие команды.

Никто не забыт, огромное спасибо за это превосходное время!

То, что описано в этой статье, определенно развернуло мою жизнь градусов на 60 минимум:D
А успехи команды вы можете посмотреть вот тут.

P.S. Флаг до сих пор стоит на рабочем месте возле монитора и греет душу
Подробнее..

Хакеры SolarWinds размазали свои байты в HTTP-трафике через регулярные выражения

21.12.2020 00:08:29 | Автор: admin

Валидная цифровая подпись на DLL со встроенным бэкдором

Практически по всем профильным СМИ прошла новость о взломе программного обеспечения SolarWinds в рамках глобальной кампании кибершпионажа. Здесь нужно понимать масштаб атаки: этот софт для мониторинга IT-инфраструктуры (CPU, RAM, сеть) используют тысячи частных компаний и государственных учреждений, включая АНБ, Пентагон, Госдеп и проч. В общей сложности 300 000 клиентов по всему миру (данная страница уже удалена с официального сайта SolarWinds, по ссылке копия из веб-архива).

Самое интересное в этой атаке: 1) внедрение бэкдора внутрь обновлений SolarWinds и 2) оригинальный механизм сокрытия данных в служебном HTTP-трафике программы SolarWinds. В двух словах расскажем о методе стеганографии (covert signaling), который здесь применялся.

Отдельные подробности об атаке опубликовала компания FireEye в отчёте от 13 декабря 2020 года. Эта американская компания должна защищать сети своих клиентов от подобных диверсий, но в итоге и сама пострадала от взлома вместе с ними.

Некоторые из клиентов SolarWinds:



Основные факты


  • Бэкдор обнаружен спустя семь месяцев после начала атаки, ему присвоено кодовое название SUNBURST. Учитывая масштаб заражения, это серьёзный фейл антивирусных компаний.
  • Заражённая DLL распространялась с обновлениями платформы SolarWinds Orion, которая служит для мониторинга корпоративной сети.


    Платформа SolarWinds Orion

Валидная цифровая подпись


Бэкдор обнаружен в библиотеке SolarWinds.Orion.Core.BusinessLayer.dll, которая подписана действительной цифровой подписью компании SolarWinds Worldwide, LLC (скриншот выше).

В частности, инфицирован ряд обновлений программы SolarWinds Orion за март-май 2020 года, которые распространялись с действительной цифровой подписью.

Это был стандартный файл Windows Installer Patch со всеми обычными ресурсами, включая заражённую библиотеку SolarWinds.Orion.Core.BusinessLayer.dll. После установки библиотека нормально загружалась в память штатным экзешником SolarWinds.BusinessLayerHost.exe.

Специалисты Microsoft пояснили, что злоумышленники использовали локальный взлом [on-premises compromise], чтобы получить доступ к доверенному сертификату подписи SAML-токенов организации [SolarWinds]. Это позволило им подделать токены SAML для всех существующих пользователей и аккаунтов организации, включая высокопривилегированные. Судя по всему, речь о физическом проникновении в офис компании (on-premises compromise).

Уникальные особенности


  • Алгоритм Domain Generation Algorithm (DGA) для генерации поддоменов и изменения DNS-запросов. Троян отправлял запрос на резолв поддомена avsvmcloud[.]com, а в DNS-ответе содержалась запись CNAME с указанием командного сервера.
  • Весь трафик маскировался под сетевой трафик по служебному протоколу Orion Improvement Program (OIP) через SolarWinds API. Таким образом, антивирусы и файрволы не могли отличить активность бэкдора от настоящей активности программы SolarWinds.
  • Программный код бэкдора внедрялся в стандартные программные компоненты.

Стеганография


А вот самая интересная часть как именно бэкдор маскировал пакеты в обычном сетевом трафике:

Для получения данных зловред использовал запросы HTTP GET или HTTP HEAD, и для отправки HTTP PUT или HTTP POST. Метод PUT использовался, когда полезная нагрузка меньше 10000 байт; в противном случае используется POST. HTTP-заголовок If-None-Match содержит заксоренное представление userID, вычисленного ранее, с добавлением случайного массива байтов той же длины.

Полезная нагрузка JSON в запросах HTTP POST и PUT содержит ключи userId, sessionId и steps. Сообщения с данными для отправки на сервер сжаты DEFLATE и однобайтовым XOR. Каждое сообщение отдельно кодируется Base64.

В наблюдаемом трафике тела HTTP-ответов скрываются под доброкачественные XML, связанные со сборками .NET. Но на самом деле данные распределены по многим строкам GUID и HEX. Команды извлекаются из тел HTTP-ответов путём поиска hex-строк с использованием следующего регулярного выражения: \{[0-9a-f-]{36}\}"|"[0-9a-f]{32}"|"[0-9a-f]{16}. Командные данные распределены по нескольким строкам, замаскированным под строки GUID и HEX. Все совпадающие подстроки в ответе фильтруются на наличие символов не-HEX, объединяются вместе и декодируются HEX. Первое значение DWORD показывает фактический размер сообщения, за которым сразу же следует сообщение, а затем необязательные мусорные байты. Извлечённое декодируется однобайтным XOR с использованием первого байта сообщения, а затем разархивируется DEFLATE. Первый символ это целое число ASCII, которое соответствует команде JobEngine с необязательными дополнительными аргументами, разделёнными пробелами.

Заказчик
В случае таких продвинутых атак невозможно установить разработчиков программы. Исследователи делают предположения на основании совпадения кода с ранее обнаруженными хакерскими инструментами, а также исходя из того, кто именно стал жертвой шпионажа.

Например, в 2010 году были повреждены иранские установки для обогащения урана. Очень продвинутый зловред Stuxnet слегка менял скорость вращения установок и в конце концов вывел их из строя. Соответственно, логично предположить, что заказчиками и разработчиками зловредров были спецслужбы США и Израиля, поскольку эти страны планомерно пытаются помешать изготовлению ядерного оружия в Иране, действуя не всегда дипломатическими методами.

Что касается бэкдора SUNBURST, то его приписывают скорее российским хакерам из группировки APT29 (Cozy Bear), исходя из хитроумности применяемых техник, выбора целей и физического проникновения в офис жертвы. Хотя достоверно заказчик и исполнитель не известны.

Правила Snort для обнаружения и блокировки трафика SUNBURST опубликованы в свободном доступе.


Подробнее..

Security Week 12 стеганография в Twitter

22.03.2021 20:04:15 | Автор: admin
Хранение данных в изначально не приспособленных для этого форматах часто обсуждают в сфере инфобезопасности. Как правило, стеганографию используют для скрытной передачи информации: например, зараженная система связывается с командным сервером и передает на первый взгляд безобидные изображения.

На прошлой неделе очередное упражнение на эту тему произошло в лагере white-hat: исследователь Дэвид Бьюкенан (David Buchanan) нашел способ обмениваться файлами через картинки в твиттере (новость, страница на GitHub с описанием и кодом).



Никакой уязвимости тут нет: вставлять данные в PNG-изображение можно разными способами, а в данном случае даже не требуется специальный инструмент для декодирования. Достаточно переименовать .png-файл в .zip и распаковать данные из получившегося архива.

Автор этого трюка нашел особенность обработчика изображений в Twitter, который удаляет часть избыточных данных из файла, но не трогает одну из областей IDAT, где и спрятана лишняя информация. У метода есть ограничения: если итоговый файл весит больше 3 Мбайт, Twitter сконвертирует изображение в JPEG. Демонстрация метода доступна в твиттере автора, а изображение оттуда приведено выше: на Хабре трюк тоже работает (на момент публикации). Внутри ZIP-файла-картинки спрятан код на Python, позволяющий прятать в PNG произвольные данные.

Еще одна демонстрация с файлом потолще: Дэвид не удержался и устроил рикролл в отдельно взятой картинке. Помимо твиттера и Хабра, аналогичный способ действует на хостинге картинок Imgur и в репозитории GitHub, но не работает, например, на Reddit.

Что еще произошло:
Большая новость недели: обнародованные ранее уязвимости в высокопроизводительных сетевых устройствах F5 BIG-IP и BIG-IQ активно эксплуатируют, эксплойт для обхода систем аутентификации лежит в открытом доступе.



Продолжается оценка ущерба от уязвимостей в Microsoft Exchange Server, в том числе за пределами США. Бельгийский центр реагирования на киберугрозы сообщает о 400 пострадавших (читай, взломанных) почтовых серверах. На сайте Microsoft опубликованы подробные рекомендации для системных администраторов по лечению атакованных серверов. Также вышел набор обычных апдейтов для Exchange Server, в том числе решающий проблемы, которые могли возникнуть после аварийного патча.

Еще один патч от Microsoft призван закрыть все проблемы с печатью в Windows 10, вызванные неудачными обновлениями, выпущенными ранее.

Производителя компьютеров Acer предположительно успешно атаковал шифровальщик. По данным BleepingComputer, с компании требуют 50 миллионов долларов.

В Facebook собрали свою команду ИБ-исследователей, аналог Google Project Zero и других проектов.

Исследования экспертов Лаборатории Касперского: анализ рекламного ПО для macOS с кодом на Rust и разбор вредоносного кода с поддержкой архитектуры Apple M1.

Обнаружена уязвимость в WordPress-плагине TutorLMS, грозящая кражей данных и повышением привилегий.



Компания Netflix вводит правило, согласно которому одновременное использование аккаунта в разных локациях должно быть подтверждено владельцем. Стриминговый сервис борется не столько с обычными пользователями, которые передают пароль друзьям, сколько с черным рынком учеток.
Подробнее..

Как спрятать мусор в базе Spotify и превратить это в квест

14.09.2020 08:09:56 | Автор: admin
Опасный хакер прячет Spotify-код с секретной информациейОпасный хакер прячет Spotify-код с секретной информацией

Введение

Одной бессонной ночью мы с приятелем разговорились о Spotify-кодах.

Это такие картинки, которые можно отсканировать приложением и попасть на нужный трек/альбом/плейлист. Придуманы они, чтобы люди могли делиться музыкой в социальных сетях или в оффлайне.

Пример. Такая грусть у меня играет прямо сейчас.Пример. Такая грусть у меня играет прямо сейчас.

Мы решили разобраться, как же Spotify кодирует в них ссылки.

Как работают коды?

Выяснилось, что помимо меню Поделиться в приложении, есть официальный сайт Spotify Codes, который генерирует такие коды.

Если скопировать ссылку на картинку с этого сайта, получится что-то такое: https://scannables.scdn.co/uri/plain/jpeg/000000/white/640/spotify:track:5jxN9knH0vlfpN2Ft7a5xi

Прекрасно! Динамическая ссылка, которая принимает на вход ID трека и возвращает изображение с баркодом самое то для наших экспериментов.

Очень удобно, что генератор может рисовать коды и в SVG. Это позволило без головной боли понять, что столбики бывают восьми разных высот.

Числа в поле height высоты столбиковЧисла в поле height высоты столбиков

Первый и последний столбик всегда минимального размера, так что он, видимо, используется для ориентирования при сканировании, как и логотип Spotify, который на картинке всегда слева. Без них ничего не работает.

Важные данные выделены краснымВажные данные выделены красным

Получив число 556205622371746371156, приложение превращает его в 58992959842 с помощью таблицы Грея. Именно это делает распознаванием таким быстрым и устойчивым к ошибкам. Как узнали? К этому моменту мы уже набрели на патент Spotify, описывающий принцип работы таких кодов.

Остался последний вопрос: как же приложение превращает лаконичное 58992959842 в spotify:track:5jxN9knH0vlfpN2Ft7a5xi?

Очевидно, такое число не может вместить в себя все комбинации длинного цифро-буквенного ID, а значит никакого алгоритма нет и соответствие между кодом и ID трека хранится где-то в базе.

Можно проверить, подсунув генератору какой-нибудь очень длинный мусор, который точно не влез бы в число: https://scannables.scdn.co/uri/plain/jpeg/000000/white/640/spotify:track:thisisaverylongidentifierwhichwoulddefinitelyoverflowthatnumericcode

Сработало. Печально, а ведь было интересно научиться кодировать/раскодировать такие картинки полностью самостоятельно.

Решила проверить обмен приложения с сервером в момент распознавания и догадка подтвердилась:

На сервер уходит 58992959842, а возвращается трек 5jxN9knH0vlfpN2Ft7a5xiНа сервер уходит 58992959842, а возвращается трек 5jxN9knH0vlfpN2Ft7a5xi

Скука: дальше всё происходит за ширмой бэкенда. Расходимся?

Оченьдлинныймусор

Стоп, что? Генератор сделал картинку для оченьдлинногомусора?

Вероятно, он не проверяет реальность входных данных и бережно складывает наш мусор в базу, присваивая ему 11-значный числовой ID.

Картинка с мусором из примера вышеКартинка с мусором из примера выше

А что будет, если считать такой код приложением?

Будет ошибкаБудет ошибка

Это ожидаемая реакция. Наверное, сервер уже проверил и инвалидировал некорректный код. Интересно посмотреть, как выглядит такая ошибка, поэтому загляну в трафик ещё раз:

Эм, что?Эм, что?

Великолепно. Spotify складывает в базу всё, что мы укажем в запросе к генератору, хранит это там, а при сканировании отдаёт обратно в первозданном виде, никак не валидируя.

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

Всё лучше под музыку

Чтобы всё было аккуратно, нужно заставить приложение играть музыку, несмотря на чужеродные данные в ID трека.

Я уже собралась реверсить обфусцированный код Android-приложения, чтобы узнать, как работает парсер, но приятель предложил попробовать разделять музыкальный ID и нашу полезную нагрузку знаком вопроса. Идея сработала, но знак пришлось дважды пропустить через urlencode. Например, spotify:track:2ctvdKmETyOzPb2GiJJT53%253Fhi,habr!, выглядит вот так:

Код с двойным дномКод с двойным дном

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

Выводы

Почему Spotify позволяет хранить в базе мусор? Вероятно, потому что генерацией и распознаванием кодов занимается отдельный микросервис, который должен отвечать моментально. Проверка на существование трека потребовала бы обращения к основному бэкенду, а это ресурсоёмкая задача.

Навредит ли это Spotify? Теоретически эта особенность позволяет заполнить таблицу соответствий кодов и исчерпать всю ёмкость, сломав генерацию картинок для настоящих треков, но на практике это займёт очень много времени. Я посчитала.

Полезно ли это на практике? Не знаю, как это использовать. Можете прятать номера телефонов любовниц в кодах с Егором Летовым и обклеивать ими стены, тогда ваша законная женщина покинет вас, сочтя сумасшедшим, будете свободны. Только имейте в виду, что запрос к API для считывания кода, к сожалению, требует авторизационный токен Spotify-аккаунта, в отличие от запроса для генерации картинки.

Оригинальный квест был здесь, послание было в Base64. Кто-то прошёл его за 42 минуты. На большее я не рассчитывала: имеющие привычку лезть в трафик приложений догадались бы сразу.

Помогал думать, предполагал хранение кодов в базе и решил добавить в ID знак вопроса приятель Эль.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru