-
Notifications
You must be signed in to change notification settings - Fork 1
Группировка S I
- Категория: Web
- Стоимость: 300
- Автор идеи и реализации: Александр Борзунов
- Репозиторий
S — одна из самых жестоких и неуправляемых группировок нашего времени. Никто и никогда не видел живого представителя S, но каждый житель планеты хотя бы раз в жизни сталкивался с последствиями их деятельности. Сегодня мы обнаружили в пространстве группировки S несколько неизвестных ранее страниц. Особых оснований полагать, что там находится интересная нам информация, нет, но всё-таки стоит проверить, что это за страницы. Возможно, вам поможет онлайн-переводчик с языка S.
Вглянув на страницы {learn,explore,destroy}.grouping-s.contest.qctf.ru, легко догадаться, что ссылка на онлайн-переводчик дана не случайно: чтобы прочитать текст на страницах, нужно перевести их с некоторого языка.
Переводчик принимает URL и возвращает однозначно переведённую страницу. Две из трёх данных страниц без проблем переводятся, а вот при попытке перевода третьей — destroy — переводчик сообщает, что работа с таким доменным именем запрещена. Кроме того, поэкспериментировав, можно выяснить, что переводчик может обрабатывать только страницы, расположенные на сервере с определённым IP-адресом.
Способов обойти блокировку несколько:
-
Способ, предполагавшийся как основной — вспомнить дерево доменных имён и добавить в конец домена точку:
http://destroy.grouping-s.contest.qctf.ru./
Несмотря на то, что оба домена (с точкой на конце и без) будут вести на одну страницу, формально это разные доменные имена, поэтому блокировка не сработает.
Интересно, что многие браузеры привязывают к домену с точкой и к домену без точки разные хранилища для cookies, поэтому аналогичная идея позволяет заходить на некоторые сайты с двух различных аккаунтов одновременно.
-
Также можно было воспользоваться слабостью валидации и поменять регистр любой из букв доменного имени с нижнего на верхний:
http://Destroy.grouping-s.contest.qctf.ru./
-
Этот вариант решения нами задуман не был и появился из-за ошибки в конфигурации веб-сервера nginx. Изначально файл конфигурации содержал единственную секцию server:
server { listen 80; server_name ~^(?<site>learn|explore|destroy)\.grouping-s\.contest\.qctf\.ru$; access_log /var/www/grouping-s/log/nginx.access.log; error_log /var/www/grouping-s/log/nginx.error.log; root /var/www/grouping-s/www/$site; ... }
Подводный камень заключается в том, что даже если HTTP-заголовок Host не подходит под регулярное выражение, выберется именно эта секция, так как иной секции по умолчанию задано не было. При этом группа
$site
не заполнится регулярным выражением, и корень сайта установится в/var/www/grouping-s/www/
. Добавив к URL путь/destroy
, можно было получить доступ к папке с html-страницей сайта «destroy».Установить «неожиданный» заголовок Host можно было, например, обратившись к серверу по IP (тогда в заголовке Host окажется именно IP):
http://80.93.X.X/destroy
Здесь
80.93.X.X
— IP сервера с сайтами.
Если каким-то из этих способов перевести заблокированную страницу, можно увидеть флаг.