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

Command Injection: eval() Injection

Калькулятор на e-commerce сайте вычисляет выражения через eval(), позволяя любому авторизованному пользователю выполнить произвольный Python-код.

mediumpythonPro
Задача
# Инъекция через выполнение динамического кода ## Сценарий Перед вами интернет-магазин SecureShop. На сайте есть встроенный калькулятор — простой инструмент для расчёта скидок и итоговых сумм. Пользователь вводит выражение, сервер вычисляет результат и возвращает его в UI. Реализация выглядит безобидно, но в Python (как и в большинстве динамических языков) существует целый класс уязвимостей **Code Injection** — когда пользовательский ввод попадает в механизм динамического выполнения кода. Это не классическая Command Injection через системную оболочку — это выполнение произвольного кода на языке самого приложения, что часто даёт атакующему ещё больше возможностей: доступ ко всем встроенным функциям, импорт любых модулей, прямое чтение файлов через языковой API без обращения к shell. В системе есть CTF-флаг — обычный текстовый файл на сервере. Ваша задача — найти узкое место в реализации калькулятора, использовать его для выполнения произвольного кода в процессе приложения и через этот канал прочитать файл с флагом. Уязвимость относится к классу **CWE-95** (некорректная нейтрализация директив в динамически вычисляемом коде) и входит в категорию инъекций OWASP. ## Цели 1. Войдите в приложение под `demo` / `demo` и найдите функциональность калькулятора. 2. Попробуйте передать через калькулятор не только арифметику, но и более сложные конструкции — наблюдая, как сервер на это реагирует. 3. На основе наблюдений сформируйте полезную нагрузку, которая прочитает с сервера произвольный файл по абсолютному пути. 4. Используйте полученный канал, чтобы прочитать файл с CTF-флагом и забрать его значение. ## Данные | Параметр | Значение | |----------|----------| | Пользователь | `demo` / `demo` |
🚧 Сайт в разработке. Полный функционал пока недоступен. Все вопросы — support@hackandfix.ru