Skip to content

Группировка S I

Alexander Borzunov edited this page Dec 7, 2016 · 4 revisions

Группировка S I

  • Категория: Web
  • Стоимость: 300
  • Автор идеи и реализации: Александр Борзунов
  • Репозиторий

Условие

S — одна из самых жестоких и неуправляемых группировок нашего времени. Никто и никогда не видел живого представителя S, но каждый житель планеты хотя бы раз в жизни сталкивался с последствиями их деятельности. Сегодня мы обнаружили в пространстве группировки S несколько неизвестных ранее страниц. Особых оснований полагать, что там находится интересная нам информация, нет, но всё-таки стоит проверить, что это за страницы. Возможно, вам поможет онлайн-переводчик с языка S.

Решение

Вглянув на страницы {learn,explore,destroy}.grouping-s.contest.qctf.ru, легко догадаться, что ссылка на онлайн-переводчик дана не случайно: чтобы прочитать текст на страницах, нужно перевести их с некоторого языка.

Переводчик принимает URL и возвращает однозначно переведённую страницу. Две из трёх данных страниц без проблем переводятся, а вот при попытке перевода третьей — destroy — переводчик сообщает, что работа с таким доменным именем запрещена. Кроме того, поэкспериментировав, можно выяснить, что переводчик может обрабатывать только страницы, расположенные на сервере с определённым IP-адресом.

Способов обойти блокировку сразу несколько.

Первый и предполагавшийся как основной — вспомнить дерево доменных имён и добавить в конец URL точку. Несмотря на то, что обе ссылки (с точкой и без) ведут на одну страницу, формально это разные доменные имена, а значит, для варианта с точкой блокировка, работающая для варианта без точки, не сработает.

Второй способ обойти блокировку — воспользоваться слабостью валидации и поменять регистр любой из букв доменного имени с нижнего на верхний.

Третий вариант решения заключается в том, что из-за допущенной разработчиками ошибки в конфигурации сервера любую из страниц можно было получить не только по доменному имени, но и с помощью запроса вида A.B.C.D/page, где A.B.C.D — IP-адрес сервера, а page — имя страницы.

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