Path Traversal: Normpath Bypass
Обработчик использует os.path.normpath() до конкатенации, что не предотвращает выход за пределы директории.
mediumpythonPro
Задача
# Path Traversal: обход неполной нормализации
## Сценарий
Перед вами Flask-приложение интернет-магазина SecureShop. Эндпоинт скачивания изображений товаров принимает имя файла из параметра запроса и возвращает содержимое из директории со статикой.
В отличие от базовой Path Traversal-уязвимости, в этой реализации разработчик уже знал про класс проблемы и **добавил защиту** — пропускает имя файла через стандартную функцию нормализации пути. Однако он применяет её не там, где она эффективна: типичная ошибка в порядке операций при работе с путями. В результате последовательности обхода директории сохраняются после «защиты» и проходят дальше в склейку с базовой директорией.
В системных файлах сервера и переменных окружения процесса есть данные, ведущие к CTF-флагу.
## Цели
1. Найдите эндпоинт скачивания файлов и убедитесь, что он принимает имя файла из параметра запроса.
2. Определите эмпирически: блокирует ли «защита» классический traversal через `. `, или последовательности обхода проходят беспрепятственно.
3. Прочитайте через path-traversal данные за пределами публичной директории, выйдите на CTF-флаг и сдайте его на странице профиля.
## Данные
| Параметр | Значение |
|----------|----------|
| Обычный пользователь | `demo` / `demo` |