Перейти к содержимому
← Каталог python File Upload

File Upload: обход проверки расширения через Content-Type

Загрузчик изображений проверяет расширение файла, но не его содержимое. HTML-файл, переименованный в .jpg, загружается и исполняется в браузере.

easypythonPro
Задача
# Обход проверки при загрузке файлов ## Сценарий Перед вами Flask-приложение интернет-магазина SecureShop. Авторизованные пользователи могут прикреплять к страницам товаров изображения — обычная функция «загрузить картинку для отзыва или товара». Разработчик подумал о безопасности и **добавил проверку формата** загружаемых файлов: явно перечислил, какие типы изображений разрешены. Однако проверка реализована не самым надёжным способом — она опирается на свойство файла, которое полностью контролируется клиентом. Этого достаточно, чтобы создать ситуацию, в которой сервер сохраняет «изображение», которое на самом деле им не является, а потом, когда браузер другого пользователя его «открывает», происходит непредусмотренное поведение. Ваша задача — понять, что именно проверяет фильтр и какое свойство он упускает, использовать это для загрузки опасного содержимого, и через результирующее поведение получить CTF-флаг. ## Цели 1. Авторизуйтесь как `demo` / `demo` и найдите функцию загрузки изображения на странице товара. 2. Изучите, какие именно проверки выполняет сервер при загрузке файла. Чему он доверяет, а что — игнорирует? 3. Сформируйте файл, который пройдёт фильтр, но при последующем обращении к нему браузер интерпретирует не как изображение. 4. Используйте получившееся поведение, чтобы получить CTF-флаг через профиль пользователя. ## Данные | Параметр | Значение | |----------|----------| | Обычный пользователь | `demo` / `demo` |
🚧 Сайт в разработке. Полный функционал пока недоступен. Все вопросы — support@hackandfix.ru