April 30

Трейлсы

AlfaCTF 2026

Сложность: Easy

Категория: Web

Автор: Владимир Волков (@v1ru55), SPbCTF

Описание:

Ваш друг-темщик постоянно что-то мутит: скоро запустит сервис с короткими видео из походов, назвал «Трейлсы».

Он поделился с вами своим недоделанным творением. Говорит, что где-то спрятал точку с лучшим обзором, который он когда-либо видел — оттуда виден даже флаг. Найдите её!

trailsy-vxggpfso.alfactf.ru/

Переходим по ссылке

Начинаем листать трейлсы и замечаем, что в параметре v передается файл trails1.mp4

Можно догадаться о возможной уязвимости LFI (Local File Inclusion), когда вместо trails1.mp4, мы можем подставить путь к системному файлу, например /etc/passwd и сервер может нам его выдать.

Проверим:

Уязвимость есть! В качестве значения я передал ../../../etc/passwd, так как пользователь под которым работает веб-сервер, который и отдал нам passwd, обычно имеет домашнюю папку в /var/www, поэтому мы поднимаемся в корень файловой системы ../../../ и из него читаем /etc/passwd

Таким образом можно прочитать много файлов, например иногда флаг находится в /proc/self/environ - переменные окружения, но там ничего не обнаружилось и я решил найти папку с исходниками приложения.

Она оказалась в ../../../app, то есть не всегда /var/www может быть домашней папкой, но круг поиска директорий обычно не большой

Не долго думая решил проверить app.py, пролистал код и увидел такой роут

Но для него важно быть админом. Посмотрим другой интересный файл users.db

Вот и пароль админа. Входим под админом и переходим по /d3a7f1c9b2e8. Получаем флаг.