Перейти к содержимому

Поиск по платформе

Каталог Всего XP в каталоге: 12 000

Каталог лабораторий

207 лаб · 63 пути

Все уязвимости созданы искусственно в изолированных стендах платформы
Начни отсюда Лёгкая~15м SQL Injection (Auth Bypass) Открыть первую лабу
Загружаем лаборатории

Безопасность API (API Security)

3 лабораторные
Обложка лабы: API Rate Limit: Brute-force логина без ограничений Обложка лабы: API Rate Limit: Brute-force логина без ограничений
API
Средняя · ~35 минут

API Rate Limit: Brute-force логина без ограничений

Отсутствие rate limiting на эндпоинте логина позволяет brute-force пароля администратора.

+60 XP
Go
Exploit Fix
Обложка лабы: API Mass Assignment: Повышение привилегий через PUT Обложка лабы: API Mass Assignment: Повышение привилегий через PUT
API
Средняя · ~35 минут

API Mass Assignment: Повышение привилегий через PUT

encoding/json декодирует PUT-запрос в map[string]interface{}, а self-service switch ошибочно разрешает role наряду с fullname и avatar_url.

+60 XP
Go
Exploit Fix
Обложка лабы: API BOLA: Доступ к чужим заказам Обложка лабы: API BOLA: Доступ к чужим заказам
API
Средняя · ~35 минут

API BOLA: Доступ к чужим заказам

Broken Object Level Authorization (BOLA): API возвращает заказы любого пользователя по ID без проверки владельца.

+60 XP
Go
Exploit Fix

Обход аутентификации (Authentication Bypass)

26 лабораторных
Обложка лабы: JWT: Подбор слабого секретного ключа Обложка лабы: JWT: Подбор слабого секретного ключа
Auth
Средняя · ~35 минут

JWT: Подбор слабого секретного ключа

Приложение подписывает JWT токеном HMAC-SHA256 со слабым ключом. Подбери секрет и подделай токен администратора.

+60 XP
Go
Exploit Fix
Обложка лабы: JWT Key Confusion (RS256 to HS256) Обложка лабы: JWT Key Confusion (RS256 to HS256)
Auth
Сложная · ~65 минут

JWT Key Confusion (RS256 to HS256)

JWT RS256/HS256 key confusion: the server exposes the public key and doesn't enforce the signing algorithm, allowing token forgery via algorithm switch.

+90 XP
Go
Exploit Fix
Обложка лабы: JWT Authentication: Взлом слабой криптографии Обложка лабы: JWT Authentication: Взлом слабой криптографии
Auth
Сложная · ~65 минут

JWT Authentication: Взлом слабой криптографии

В этой лаборатории сервер использует JWT для авторизации, но совершает сразу две критические ошибки: использует слабый секретный ключ и доверяет заголовку alg.

+90 XP
Go
Exploit Fix
Обложка лабы: Слабые Пароли (Нет Валидации Сложности) Обложка лабы: Слабые Пароли (Нет Валидации Сложности)
Auth
Лёгкая · ~20 минут

Слабые Пароли (Нет Валидации Сложности)

Форма регистрации принимает любые пароли, включая однозначные. Аккаунт admin защищён паролем 'admin'.

+30 XP
Go
Exploit Fix
Обложка лабы: Timing Attack: Перечисление Пользователей Обложка лабы: Timing Attack: Перечисление Пользователей
Auth
Сложная · ~65 минут

Timing Attack: Перечисление Пользователей

Обработчик логина имеет разное время ответа для существующих и несуществующих пользователей, что позволяет перечислять аккаунты.

+90 XP
Go
Exploit Fix
Обложка лабы: Брутфорс Формы Входа (Нет Rate Limiting) Обложка лабы: Брутфорс Формы Входа (Нет Rate Limiting)
Auth
Лёгкая · ~20 минут

Брутфорс Формы Входа (Нет Rate Limiting)

Форма входа не ограничивает количество попыток, позволяя подобрать пароль администратора перебором по словарю.

+30 XP
Go
Exploit Fix
Обложка лабы: Небезопасный Сброс Пароля (IDOR) Обложка лабы: Небезопасный Сброс Пароля (IDOR)
Auth
Средняя · ~35 минут

Небезопасный Сброс Пароля (IDOR)

Форма сброса пароля принимает user_id из клиента, позволяя атакующему сбросить пароль любого пользователя через IDOR.

+60 XP
Go
Exploit Fix
Обложка лабы: Предсказуемые Токены Сессии (MD5) Обложка лабы: Предсказуемые Токены Сессии (MD5)
Auth
Средняя · ~35 минут

Предсказуемые Токены Сессии (MD5)

Сессионные токены генерируются через MD5(username), что позволяет предсказать токен администратора и захватить его сессию.

+60 XP
Go
Exploit Fix
Обложка лабы: JWT: подбор слабого секрета и подделка admin-токена Обложка лабы: JWT: подбор слабого секрета и подделка admin-токена
Auth
Средняя · ~35 минут

JWT: подбор слабого секрета и подделка admin-токена

Сервер подписывает JWT слабым секретом из словаря. Получив один валидный токен, атакующий за секунды подбирает секрет по словарю офлайн, подписывает новый токен с role=admin и забирает флаг.

+60 XP
Node.js
Exploit Fix
Обложка лабы: JWT: Key Confusion (RS256 to HS256) на jsonwebtoken Обложка лабы: JWT: Key Confusion (RS256 to HS256) на jsonwebtoken
Auth
Сложная · ~65 минут

JWT: Key Confusion (RS256 to HS256) на jsonwebtoken

Express-приложение подписывает JWT через RS256 и публикует RSA публичный ключ через JWKS-эндпоинт. Функция верификации вызывает jwt.verify без явного whitelist алгоритмов — это позволяет атакующему подписать HS256-токен публичным ключом и получить admin-доступ.

+90 XP
Node.js
Exploit Fix
Обложка лабы: JWT alg:none — обход аутентификации без подписи Обложка лабы: JWT alg:none — обход аутентификации без подписи
Auth
Средняя · ~35 минут

JWT alg:none — обход аутентификации без подписи

Сервер принимает JWT с alg:none и доверяет роли из claims — подделайте токен для получения прав администратора в SecureShop.

+60 XP
Node.js
Exploit Fix
Обложка лабы: Слабая Парольная Политика Обложка лабы: Слабая Парольная Политика
Auth
Лёгкая · ~20 минут

Слабая Парольная Политика

Регистрация принимает любой пароль без проверки сложности. Пароль администратора — 'admin'.

+30 XP
Node.js
Exploit Fix
Обложка лабы: Timing-атака на форму входа Обложка лабы: Timing-атака на форму входа
Auth
Средняя · ~35 минут

Timing-атака на форму входа

Обработчик входа раскрывает существование пользователей через разницу во времени ответа — bcrypt вызывается только для существующих аккаунтов.

+60 XP
Node.js
Exploit Fix
Обложка лабы: Брутфорс Формы Входа (Нет Rate Limiting) — Node.js Обложка лабы: Брутфорс Формы Входа (Нет Rate Limiting) — Node.js
Auth
Средняя · ~35 минут

Брутфорс Формы Входа (Нет Rate Limiting) — Node.js

Форма входа Express-приложения не ограничивает количество попыток, позволяя подобрать пароль администратора перебором по словарю.

+60 XP
Node.js
Exploit Fix
Обложка лабы: JWT: Weak Secret Обложка лабы: JWT: Weak Secret
Auth
Лёгкая · ~20 минут

JWT: Weak Secret

JWT подписан слабым секретом — подберите его через brute-force и подделайте токен администратора.

+30 XP
PHP
Exploit Fix
Обложка лабы: JWT: Key Confusion (RS256 to HS256) Обложка лабы: JWT: Key Confusion (RS256 to HS256)
Auth
Сложная · ~65 минут

JWT: Key Confusion (RS256 to HS256)

Сервер подписывает JWT через RS256, но при валидации читает алгоритм из заголовка токена. Атакующий меняет alg на HS256, подписывает токен публичным RSA-ключом как HMAC-секретом и получает admin.

+90 XP
PHP
Exploit Fix
Обложка лабы: JWT: None Algorithm Attack Обложка лабы: JWT: None Algorithm Attack
Auth
Средняя · ~35 минут

JWT: None Algorithm Attack

Сервер принимает JWT с алгоритмом none — подделайте токен без подписи и получите права администратора.

+60 XP
PHP
Exploit Fix
Обложка лабы: Weak Password Policy Обложка лабы: Weak Password Policy
Auth
Лёгкая · ~20 минут

Weak Password Policy

Регистрация принимает любой пароль без проверки сложности, что позволяет dictionary attack на аккаунты.

+30 XP
PHP
Exploit Fix
Обложка лабы: Timing-атака на форму входа (PHP) Обложка лабы: Timing-атака на форму входа (PHP)
Auth
Средняя · ~35 минут

Timing-атака на форму входа (PHP)

Обработчик входа раскрывает существование пользователей через разницу во времени ответа — bcrypt вызывается только для существующих аккаунтов.

+60 XP
PHP
Exploit Fix
Обложка лабы: Login Bruteforce Обложка лабы: Login Bruteforce
Auth
Лёгкая · ~20 минут

Login Bruteforce

Эндпоинт логина не ограничивает количество попыток аутентификации, позволяя атакующему перебирать пароли.

+30 XP
PHP
Exploit Fix
Обложка лабы: JWT: Weak Secret Обложка лабы: JWT: Weak Secret
Auth
Лёгкая · ~20 минут

JWT: Weak Secret

JWT подписан слабым секретом — подберите его через brute-force и подделайте токен администратора.

+30 XP
Python
Exploit Fix
Обложка лабы: JWT: None Algorithm Attack Обложка лабы: JWT: None Algorithm Attack
Auth
Средняя · ~35 минут

JWT: None Algorithm Attack

Сервер принимает JWT с alg:none и доверяет роли из claims — подделайте токен для получения прав администратора.

+60 XP
Python
Exploit Fix
Обложка лабы: JWT: Key Confusion (RS256 to HS256) Обложка лабы: JWT: Key Confusion (RS256 to HS256)
Auth
Сложная · ~65 минут

JWT: Key Confusion (RS256 to HS256)

Сервер подписывает JWT через RS256, но не проверяет алгоритм при валидации. Атакующий скачивает публичный ключ и подписывает HS256-токен этим ключом как HMAC-секретом.

+90 XP
Python
Exploit Fix
Обложка лабы: Слабая Парольная Политика Обложка лабы: Слабая Парольная Политика
Auth
Лёгкая · ~20 минут

Слабая Парольная Политика

Регистрация принимает любой пароль без проверки сложности. Пароль администратора — 'admin'.

+30 XP
Python
Exploit Fix
Обложка лабы: Timing-атака на форму входа Обложка лабы: Timing-атака на форму входа
Auth
Средняя · ~35 минут

Timing-атака на форму входа

Обработчик входа раскрывает существование пользователей через разницу во времени ответа — bcrypt вызывается только для существующих аккаунтов.

+60 XP
Python
Exploit Fix
Обложка лабы: Брутфорс Формы Входа (Нет Rate Limiting) Обложка лабы: Брутфорс Формы Входа (Нет Rate Limiting)
Auth
Лёгкая · ~20 минут

Брутфорс Формы Входа (Нет Rate Limiting)

Форма входа не ограничивает количество попыток, позволяя подобрать пароль администратора перебором по словарю.

+30 XP
Python
Exploit Fix

Нарушение контроля доступа (Broken Access Control)

10 лабораторных
Обложка лабы: Referer Bypass: обход контроля доступа через подмену заголовка Обложка лабы: Referer Bypass: обход контроля доступа через подмену заголовка
Access
Средняя · ~30 минут

Referer Bypass: обход контроля доступа через подмену заголовка

API-эндпоинт /api/admin/users проверяет заголовок Referer вместо роли пользователя. Атакующий может подделать заголовок и получить доступ к данным администратора.

+60 XP
Go
Exploit Fix
Обложка лабы: URL Case Bypass: обход проверки пути с помощью регистра Обложка лабы: URL Case Bypass: обход проверки пути с помощью регистра
Access
Средняя · ~30 минут

URL Case Bypass: обход проверки пути с помощью регистра

Middleware проверяет путь с учётом регистра (strings.HasPrefix). Замена /admin на /Admin позволяет обойти проверку роли администратора.

+60 XP
Go
Exploit Fix
Обложка лабы: Forced Browsing: доступ к скрытому эндпоинту экспорта Обложка лабы: Forced Browsing: доступ к скрытому эндпоинту экспорта
Access
Лёгкая · ~15 минут

Forced Browsing: доступ к скрытому эндпоинту экспорта

Административный эндпоинт /admin/export зарегистрирован без проверки роли — любой авторизованный пользователь может получить CSV-экспорт с конфиденциальными данными.

+30 XP
Go
Exploit Fix
Обложка лабы: Horizontal Privilege Escalation: изменение профиля другого пользователя Обложка лабы: Horizontal Privilege Escalation: изменение профиля другого пользователя
Access
Средняя · ~30 минут

Horizontal Privilege Escalation: изменение профиля другого пользователя

Обработчик обновления аватара принимает user_id из формы вместо сессии -- атакующий может изменить профиль любого пользователя, включая администратора.

+60 XP
Go
Exploit Fix
Обложка лабы: Access Control: обход URL-проверки через вариации пути Обложка лабы: Access Control: обход URL-проверки через вариации пути
Access
Лёгкая · ~15 минут

Access Control: обход URL-проверки через вариации пути

Middleware проверяет доступ к /admin по точному совпадению префикса. Обойдите проверку, изменив регистр символов.

+30 XP
Node.js
Exploit Fix
Обложка лабы: Access Control: Горизонтальная эскалация через API в Express Обложка лабы: Access Control: Горизонтальная эскалация через API в Express
Access
Средняя · ~30 минут

Access Control: Горизонтальная эскалация через API в Express

API-эндпоинт /api/users/:user_id/notes не проверяет владельца. Получите заметки администратора.

+60 XP
Node.js
Exploit Fix
Обложка лабы: Access Control: Forced Browsing — скрытая админ-панель Обложка лабы: Access Control: Forced Browsing — скрытая админ-панель
Access
Лёгкая · ~15 минут

Access Control: Forced Browsing — скрытая админ-панель

Административные страницы доступны без аутентификации. Перейдите напрямую и получите конфиденциальные данные.

+30 XP
Node.js
Exploit Fix
Обложка лабы: Access Control: Обход проверки через регистр URL Обложка лабы: Access Control: Обход проверки через регистр URL
Access
Сложная · ~60 минут

Access Control: Обход проверки через регистр URL

Middleware проверяет доступ к /admin по точному совпадению. Обойдите проверку, изменив регистр символов.

+90 XP
Python
Exploit Fix
Обложка лабы: Access Control: Горизонтальная эскалация через API Обложка лабы: Access Control: Горизонтальная эскалация через API
Access
Средняя · ~30 минут

Access Control: Горизонтальная эскалация через API

API-эндпоинт /api/users/<id>/notes не проверяет владельца. Получите заметки администратора.

+60 XP
Python
Exploit Fix
Обложка лабы: Access Control: Forced Browsing — открытая админ-панель Обложка лабы: Access Control: Forced Browsing — открытая админ-панель
Access
Лёгкая · ~15 минут

Access Control: Forced Browsing — открытая админ-панель

Административные страницы доступны без аутентификации. Перейдите напрямую и получите конфиденциальные данные.

+30 XP
Python
Exploit Fix

Уязвимость бизнес-логики (Business Logic Vulnerability)

3 лабораторные
Обложка лабы: Business Logic: Подмена цены в форме Обложка лабы: Business Logic: Подмена цены в форме
BizLogic
Средняя · ~40 минут

Business Logic: Подмена цены в форме

Checkout читает цену товара из скрытого поля формы вместо базы данных, позволяя подменить стоимость заказа

+60 XP
Go
Exploit Fix
Обложка лабы: Business Logic: Отрицательное количество товаров Обложка лабы: Business Logic: Отрицательное количество товаров
BizLogic
Лёгкая · ~25 минут

Business Logic: Отрицательное количество товаров

Корзина магазина принимает отрицательное количество товаров, позволяя получить отрицательную сумму заказа и увеличить баланс

+30 XP
Go
Exploit Fix
Обложка лабы: Business Logic: Стек купонов Обложка лабы: Business Logic: Стек купонов
BizLogic
Средняя · ~40 минут

Business Logic: Стек купонов

Система купонов позволяет применять несколько купонов одновременно, суммируя скидки сверх допустимого

+60 XP
Go
Exploit Fix

Подделка межсайтовых запросов (Cross-Site Request Forgery (CSRF))

14 лабораторных
Обложка лабы: CSRF: SameSite=Lax Bypass через GET-запрос Обложка лабы: CSRF: SameSite=Lax Bypass через GET-запрос
CSRF
Средняя · ~30 минут

CSRF: SameSite=Lax Bypass через GET-запрос

Мутирующий эндпоинт смены email реализован через GET. SameSite=Lax не защищает от top-level навигации. Измени email администратора через CSRF.

+60 XP
Go
Exploit Fix
Обложка лабы: CSRF: Обход проверки Referer-заголовка Обложка лабы: CSRF: Обход проверки Referer-заголовка
CSRF
Средняя · ~30 минут

CSRF: Обход проверки Referer-заголовка

Приложение использует проверку заголовка Referer вместо CSRF-токена. Обойди проверку и смени email администратора.

+60 XP
Go
Exploit Fix
Обложка лабы: CSRF: Атака через JSON API без кастомных заголовков Обложка лабы: CSRF: Атака через JSON API без кастомных заголовков
CSRF
Средняя · ~30 минут

CSRF: Атака через JSON API без кастомных заголовков

JSON API эндпоинт не требует кастомных заголовков. Используй CSRF для смены пароля admin через API.

+60 XP
Go
Exploit Fix
Обложка лабы: CSRF: Несанкционированное действие через поддельный запрос Обложка лабы: CSRF: Несанкционированное действие через поддельный запрос
CSRF
Лёгкая · ~15 минут

CSRF: Несанкционированное действие через поддельный запрос

Форма администратора не защищена CSRF-токеном. Заставь бота выполнить действие от имени admin.

+30 XP
Go
Exploit Fix
Обложка лабы: CSRF: SameSite=Lax обходится через GET (Express) Обложка лабы: CSRF: SameSite=Lax обходится через GET (Express)
CSRF
Сложная · ~60 минут

CSRF: SameSite=Lax обходится через GET (Express)

Эндпоинт смены email реализован через GET. SameSite=Lax не защищает top-level navigation — измени email админа через CSRF и забери флаг из /api/admin/email.

+90 XP
Node.js
Exploit Fix
Обложка лабы: CSRF: JSON API без проверки происхождения запроса (Express) Обложка лабы: CSRF: JSON API без проверки происхождения запроса (Express)
CSRF
Средняя · ~30 минут

CSRF: JSON API без проверки происхождения запроса (Express)

JSON API /api/profile на Express принимает запросы без CSRF-токена и без проверки кастомного заголовка X-Requested-With. Смени пароль admin через cross-origin CSRF — затем войди и забери флаг.

+60 XP
Node.js
Exploit Fix
Обложка лабы: CSRF: Несанкционированное действие через поддельный запрос (Express) Обложка лабы: CSRF: Несанкционированное действие через поддельный запрос (Express)
CSRF
Средняя · ~30 минут

CSRF: Несанкционированное действие через поддельный запрос (Express)

Форма администратора не защищена CSRF-токеном. Заставь бота выполнить действие от имени admin.

+60 XP
Node.js
Exploit Fix
Обложка лабы: CSRF: SameSite=Lax Bypass через GET-запрос Обложка лабы: CSRF: SameSite=Lax Bypass через GET-запрос
CSRF
Средняя · ~30 минут

CSRF: SameSite=Lax Bypass через GET-запрос

Критичное действие смены пароля выполняется через GET-запрос. SameSite=Lax не защищает от top-level навигации. Сменив пароль администратора через CSRF, залогинься под admin и забери флаг.

+60 XP
PHP
Exploit Fix
Обложка лабы: CSRF: JSON API без кастомного заголовка (PHP) Обложка лабы: CSRF: JSON API без кастомного заголовка (PHP)
CSRF
Средняя · ~30 минут

CSRF: JSON API без кастомного заголовка (PHP)

JSON-endpoint /api/profile принимает state-changing запрос без проверки CSRF-токена и кастомного заголовка X-Requested-With. Простой fetch с Content-Type:text/plain даёт CSRF.

+60 XP
PHP
Exploit Fix
Обложка лабы: CSRF: Активация распродажи без токена Обложка лабы: CSRF: Активация распродажи без токена
CSRF
Лёгкая · ~15 минут

CSRF: Активация распродажи без токена

Админ-эндпоинт активации распродажи не проверяет CSRF-токен. Заставь бота выполнить действие от имени admin.

+30 XP
PHP
Exploit Fix
Обложка лабы: CSRF: SameSite=Lax Bypass через GET-запрос (Flask) Обложка лабы: CSRF: SameSite=Lax Bypass через GET-запрос (Flask)
CSRF
Средняя · ~30 минут

CSRF: SameSite=Lax Bypass через GET-запрос (Flask)

Endpoint смены email доступен через GET. SameSite=Lax не защищает от top-level GET navigation — измени email admin одной ссылкой.

+60 XP
Python
Exploit Fix
Обложка лабы: CSRF: Обход проверки Referer (Flask) Обложка лабы: CSRF: Обход проверки Referer (Flask)
CSRF
Средняя · ~30 минут

CSRF: Обход проверки Referer (Flask)

Приложение проверяет Referer как защиту от CSRF, но проверка некорректна — атакующий может обойти её, указав домен жертвы как часть пути.

+60 XP
Python
Exploit Fix
Обложка лабы: CSRF: JSON API без кастомного заголовка (Flask) Обложка лабы: CSRF: JSON API без кастомного заголовка (Flask)
CSRF
Средняя · ~30 минут

CSRF: JSON API без кастомного заголовка (Flask)

JSON API endpoint /api/profile не требует кастомного заголовка X-Requested-With. Смени пароль admin через CSRF-атаку на API.

+60 XP
Python
Exploit Fix
Обложка лабы: CSRF: Несанкционированное действие через поддельный запрос (Flask) Обложка лабы: CSRF: Несанкционированное действие через поддельный запрос (Flask)
CSRF
Лёгкая · ~15 минут

CSRF: Несанкционированное действие через поддельный запрос (Flask)

Форма администратора не защищена CSRF-токеном. Заставь бота выполнить действие от имени admin.

+30 XP
Python
Exploit Fix

Межсайтовый скриптинг (Cross-Site Scripting (XSS))

19 лабораторных
Обложка лабы: Stored XSS в комментариях к товарам Обложка лабы: Stored XSS в комментариях к товарам
XSS
Средняя · ~25 минут

Stored XSS в комментариях к товарам

Комментарии к товарам хранятся без санитаризации и отображаются как HTML. Укради сессию администратора.

+60 XP
Go
Exploit Fix
Обложка лабы: Reflected XSS в поиске магазина Обложка лабы: Reflected XSS в поиске магазина
XSS
Лёгкая · ~10 минут

Reflected XSS в поиске магазина

Поисковый запрос отражается в HTML без экранирования. Выполни произвольный JS в контексте магазина.

+30 XP
Go
Exploit Fix
Обложка лабы: DOM XSS через URL-фрагмент (location.hash) Обложка лабы: DOM XSS через URL-фрагмент (location.hash)
XSS
Средняя · ~25 минут

DOM XSS через URL-фрагмент (location.hash)

JavaScript на странице каталога читает location.hash и вставляет его в DOM через innerHTML. Укради сессию администратора.

+60 XP
Go
Exploit Fix
Обложка лабы: XSS при слабой CSP (unsafe-inline) Обложка лабы: XSS при слабой CSP (unsafe-inline)
XSS
Сложная · ~55 минут

XSS при слабой CSP (unsafe-inline)

Reflected XSS эксплуатируется благодаря CSP с 'unsafe-inline'. Исправление требует nonce-based CSP.

+90 XP
Go
Exploit Fix
Обложка лабы: XSS через атрибут (javascript: URL) Обложка лабы: XSS через атрибут (javascript: URL)
XSS
Средняя · ~25 минут

XSS через атрибут (javascript: URL)

XSS через javascript: URL-схему в атрибуте href. Go html/template экранирует HTML, но пропускает опасные URL-схемы.

+60 XP
Go
Exploit Fix
Обложка лабы: Stored XSS в комментариях к товарам (Node.js) Обложка лабы: Stored XSS в комментариях к товарам (Node.js)
XSS
Средняя · ~25 минут

Stored XSS в комментариях к товарам (Node.js)

Комментарии к товарам рендерятся через nunjucks-фильтр |safe без санитайзинга. Укради сессию администратора через Stored XSS, чтобы получить доступ к флагу.

+60 XP
Node.js
Exploit Fix
Обложка лабы: Reflected XSS в поиске Node.js Обложка лабы: Reflected XSS в поиске Node.js
XSS
Лёгкая · ~10 минут

Reflected XSS в поиске Node.js

Поисковый запрос выводится через |safe фильтр Nunjucks без экранирования. Выполни произвольный JS и укради cookie администратора.

+30 XP
Node.js
Exploit Fix
Обложка лабы: DOM XSS через location.hash и innerHTML (Express) Обложка лабы: DOM XSS через location.hash и innerHTML (Express)
XSS
Средняя · ~25 минут

DOM XSS через location.hash и innerHTML (Express)

Клиентский JavaScript на странице каталога читает фрагмент URL (location.hash) и вставляет его через innerHTML без санитизации. Серверный код чист, защита и уязвимость живут полностью в браузерном JS.

+60 XP
Node.js
Exploit Fix
Обложка лабы: XSS + обход CSP через unsafe-inline (Node.js) Обложка лабы: XSS + обход CSP через unsafe-inline (Node.js)
XSS
Лёгкая · ~10 минут

XSS + обход CSP через unsafe-inline (Node.js)

Поисковый запрос выводится через |safe без экранирования, а CSP содержит unsafe-inline — inline-скрипты не блокируются. Исправь экранирование и убери unsafe-inline из script-src.

+30 XP
Node.js
Exploit Fix
Обложка лабы: XSS через атрибут (javascript: URL) в Node.js Обложка лабы: XSS через атрибут (javascript: URL) в Node.js
XSS
Средняя · ~25 минут

XSS через атрибут (javascript: URL) в Node.js

XSS через javascript: URL-схему в атрибуте href. Nunjucks экранирует HTML-сущности, но не блокирует опасные URL-схемы.

+60 XP
Node.js
Exploit Fix
Обложка лабы: Stored XSS в комментариях к товару Обложка лабы: Stored XSS в комментариях к товару
XSS
Средняя · ~25 минут

Stored XSS в комментариях к товару

Комментарии к товарам выводятся без экранирования — Stored XSS позволяет украсть cookie администратора.

+60 XP
PHP
Exploit Fix
Обложка лабы: Reflected XSS в поиске товаров Обложка лабы: Reflected XSS в поиске товаров
XSS
Средняя · ~25 минут

Reflected XSS в поиске товаров

Поисковый запрос отображается на странице без экранирования, позволяя выполнить произвольный JavaScript в браузере жертвы.

+60 XP
PHP
Exploit Fix
Обложка лабы: DOM XSS через URL-фрагмент Обложка лабы: DOM XSS через URL-фрагмент
XSS
Средняя · ~25 минут

DOM XSS через URL-фрагмент

JavaScript читает location.hash и вставляет значение через innerHTML — DOM XSS без участия сервера.

+60 XP
PHP
Exploit Fix
Обложка лабы: XSS в HTML-атрибуте (Attribute Context) Обложка лабы: XSS в HTML-атрибуте (Attribute Context)
XSS
Средняя · ~25 минут

XSS в HTML-атрибуте (Attribute Context)

Пользовательский URL выводится в атрибуте href без валидации схемы — javascript: выполняется при клике.

+60 XP
PHP
Exploit Fix
Обложка лабы: Stored XSS в комментариях к товарам Обложка лабы: Stored XSS в комментариях к товарам
XSS
Средняя · ~25 минут

Stored XSS в комментариях к товарам

Комментарии к товарам выводятся через |safe без санитизации. Укради сессию администратора через Stored XSS.

+60 XP
Python
Exploit Fix
Обложка лабы: Reflected XSS в поиске магазина Обложка лабы: Reflected XSS в поиске магазина
XSS
Лёгкая · ~10 минут

Reflected XSS в поиске магазина

Поисковый запрос выводится через |safe фильтр Jinja2 без экранирования. Выполни произвольный JS и укради cookie администратора.

+30 XP
Python
Exploit Fix
Обложка лабы: DOM XSS через location.hash и innerHTML Обложка лабы: DOM XSS через location.hash и innerHTML
XSS
Лёгкая · ~10 минут

DOM XSS через location.hash и innerHTML

Клиентский JavaScript читает location.hash и вставляет через innerHTML без санитизации. Выполни произвольный JS и укради cookie администратора.

+30 XP
Python
Exploit Fix
Обложка лабы: XSS + обход CSP через unsafe-inline Обложка лабы: XSS + обход CSP через unsafe-inline
XSS
Лёгкая · ~10 минут

XSS + обход CSP через unsafe-inline

Поисковый запрос выводится через |safe без экранирования, а CSP содержит unsafe-inline — inline-скрипты не блокируются. Исправь оба файла: убери |safe и настрой nonce-based CSP.

+30 XP
Python
Exploit Fix
Обложка лабы: XSS через атрибут (javascript: URL) Обложка лабы: XSS через атрибут (javascript: URL)
XSS
Средняя · ~25 минут

XSS через атрибут (javascript: URL)

XSS через javascript: URL-схему в атрибуте href. Jinja2 экранирует HTML-сущности, но не блокирует опасные URL-схемы.

+60 XP
Python
Exploit Fix

Раскрытие информации (Information Disclosure)

6 лабораторных
Обложка лабы: Утечка данных через сообщения об ошибках Обложка лабы: Утечка данных через сообщения об ошибках
Info Disc
Лёгкая · ~12 минут

Утечка данных через сообщения об ошибках

Подробные сообщения об ошибках раскрывают структуру БД

+30 XP
Go
Exploit Fix
Обложка лабы: Information Disclosure: Открытый debug-эндпоинт Обложка лабы: Information Disclosure: Открытый debug-эндпоинт
Info Disc
Лёгкая · ~12 минут

Information Disclosure: Открытый debug-эндпоинт

Debug-эндпоинт раскрывает переменные окружения и список пользователей без аутентификации

+30 XP
Go
Exploit Fix
Обложка лабы: Information Disclosure: Утечка через файлы бэкапов Обложка лабы: Information Disclosure: Утечка через файлы бэкапов
Info Disc
Лёгкая · ~12 минут

Information Disclosure: Утечка через файлы бэкапов

FileServer раздаёт .env и .bak файлы из корня проекта

+30 XP
Go
Exploit Fix
Обложка лабы: Information Disclosure: Утечка через Stack Trace Обложка лабы: Information Disclosure: Утечка через Stack Trace
Info Disc
Лёгкая · ~12 минут

Information Disclosure: Утечка через Stack Trace

Ошибки сервера возвращают полные stack traces с путями файлов, SQL-схемой и переменными.

+30 XP
Python
Exploit Fix
Обложка лабы: Information Disclosure: Flask Debug Mode Обложка лабы: Information Disclosure: Flask Debug Mode
Info Disc
Лёгкая · ~12 минут

Information Disclosure: Flask Debug Mode

Flask запущен с debug=True. Через Werkzeug debugger можно получить переменные окружения.

+30 XP
Python
Exploit Fix
Обложка лабы: Information Disclosure: Утечка через backup-файлы Обложка лабы: Information Disclosure: Утечка через backup-файлы
Info Disc
Лёгкая · ~12 минут

Information Disclosure: Утечка через backup-файлы

Статическая директория содержит backup-файлы с конфиденциальными данными. Найдите SQL-дамп и извлеките флаг.

+30 XP
Python
Exploit Fix

Небезопасная десериализация (Insecure Deserialization)

6 лабораторных
Обложка лабы: Deserialization: POP-цепочка → RCE через file write Обложка лабы: Deserialization: POP-цепочка → RCE через file write
Deser
Сложная · ~72 минуты

Deserialization: POP-цепочка → RCE через file write

unserialize() без allowed_classes + классы с magic-методами (__destruct, __toString) позволяют собрать POP-цепочку, которая пишет PHP webshell в /static и даёт RCE.

+90 XP
PHP
Exploit Fix
Обложка лабы: PHP Deserialization: Phar RCE через Phar::getMetadata() Обложка лабы: PHP Deserialization: Phar RCE через Phar::getMetadata()
Deser
Сложная · ~72 минуты

PHP Deserialization: Phar RCE через Phar::getMetadata()

Эндпоинт просмотра инвойсов пытается «прочитать структурированные метаданные» и вызывает Phar::loadPhar() + getMetadata() на пути из параметра без проверки расширения. Атакующий загружает PHAR-архив под видом .jpg с объектом InvoiceCache в metadata — getMetadata() делает unserialize(), триггерит __destruct() → system() → RCE.

+90 XP
PHP
Exploit Fix
Обложка лабы: Deserialization: unserialize() без allowed_classes Обложка лабы: Deserialization: unserialize() без allowed_classes
Deser
Средняя · ~42 минуты

Deserialization: unserialize() без allowed_classes

Cookie user_prefs десериализуется через unserialize() — подделайте объект с магическим __wakeup() и получите админские права.

+60 XP
PHP
Exploit Fix
Обложка лабы: Insecure Deserialization: YAML Unsafe Load Обложка лабы: Insecure Deserialization: YAML Unsafe Load
Deser
Средняя · ~42 минуты

Insecure Deserialization: YAML Unsafe Load

+60 XP
Python
Exploit Fix
Обложка лабы: Insecure Deserialization: Pickle RCE Обложка лабы: Insecure Deserialization: Pickle RCE
Deser
Средняя · ~42 минуты

Insecure Deserialization: Pickle RCE

+60 XP
Python
Exploit Fix
Обложка лабы: Insecure Deserialization: JSON Class Markers Обложка лабы: Insecure Deserialization: JSON Class Markers
Deser
Средняя · ~42 минуты

Insecure Deserialization: JSON Class Markers

+60 XP
Python
Exploit Fix

Небезопасная прямая ссылка на объект (Insecure Direct Object Reference (IDOR))

14 лабораторных
Обложка лабы: IDOR: Вертикальная эскалация привилегий Обложка лабы: IDOR: Вертикальная эскалация привилегий
IDOR
Лёгкая · ~15 минут

IDOR: Вертикальная эскалация привилегий

Админ-эндпоинты /admin/stats и /admin/users/delete проверяют аутентификацию, но не авторизацию. Любой залогиненный пользователь может получить флаг.

+30 XP
Go
Exploit Fix
Обложка лабы: IDOR: Перебор заказов по последовательным ID Обложка лабы: IDOR: Перебор заказов по последовательным ID
IDOR
Лёгкая · ~15 минут

IDOR: Перебор заказов по последовательным ID

Заказы используют последовательные целочисленные ID. Эндпоинт /order/{id} не проверяет владельца — можно перебрать чужие заказы и найти флаг.

+30 XP
Go
Exploit Fix
Обложка лабы: IDOR: Mass Assignment — эскалация привилегий через профиль Обложка лабы: IDOR: Mass Assignment — эскалация привилегий через профиль
IDOR
Средняя · ~30 минут

IDOR: Mass Assignment — эскалация привилегий через профиль

Эндпоинт обновления профиля принимает JSON и записывает все поля, включая role. Отправь {"role":"admin"} и получи доступ к админ-панели с флагом.

+60 XP
Go
Exploit Fix
Обложка лабы: IDOR: Доступ к чужому счету Обложка лабы: IDOR: Доступ к чужому счету
IDOR
Лёгкая · ~15 минут

IDOR: Доступ к чужому счету

Эндпоинт просмотра счета не проверяет владельца. Получи флаг из счета другого пользователя.

+30 XP
Go
Exploit Fix
Обложка лабы: IDOR: Вертикальная эскалация привилегий в Express Обложка лабы: IDOR: Вертикальная эскалация привилегий в Express
IDOR
Лёгкая · ~15 минут

IDOR: Вертикальная эскалация привилегий в Express

Админ-эндпоинты Express проверяют наличие сессии, но не роль пользователя. Любой залогиненный demo-пользователь может открыть /admin/stats и забрать флаг.

+30 XP
Node.js
Exploit Fix
Обложка лабы: IDOR: предсказание UUID v1 по таймстампу Обложка лабы: IDOR: предсказание UUID v1 по таймстампу
IDOR
Сложная · ~60 минут

IDOR: предсказание UUID v1 по таймстампу

Заказы интернет-магазина идентифицируются UUID v1 (timestamp + MAC + clock_seq). Все заказы созданы внутри одного процесса, поэтому делят те же node/clock_seq биты — отличаются только по timestamp. Эндпоинт /order/:uuid не проверяет владельца, и атакующий, имея один свой UUID, угадывает UUID соседних заказов и получает чужие данные, включая CTF-флаг.

+90 XP
Node.js
Exploit Fix
Обложка лабы: IDOR: Доступ к чужому счёту в Express Обложка лабы: IDOR: Доступ к чужому счёту в Express
IDOR
Лёгкая · ~15 минут

IDOR: Доступ к чужому счёту в Express

Эндпоинт просмотра счёта в Express + better-sqlite3 не проверяет владельца ресурса. Получи доступ к счёту администратора и извлеки флаг.

+30 XP
Node.js
Exploit Fix
Обложка лабы: Vertical IDOR: Доступ к админ-панели без проверки роли Обложка лабы: Vertical IDOR: Доступ к админ-панели без проверки роли
IDOR
Сложная · ~60 минут

Vertical IDOR: Доступ к админ-панели без проверки роли

Admin-эндпоинты /admin/stats и /admin/users/delete защищены только аутентификацией, но не авторизацией. Обычный пользователь может выполнять действия администратора.

+90 XP
PHP
Exploit Fix
Обложка лабы: IDOR: Predictable Order IDs Обложка лабы: IDOR: Predictable Order IDs
IDOR
Средняя · ~30 минут

IDOR: Predictable Order IDs

Заказы используют последовательные integer ID. Атакующий перебирает ID и просматривает чужие заказы.

+60 XP
PHP
Exploit Fix
Обложка лабы: IDOR: Просмотр чужих инвойсов Обложка лабы: IDOR: Просмотр чужих инвойсов
IDOR
Лёгкая · ~15 минут

IDOR: Просмотр чужих инвойсов

Эндпоинт /invoice?id=N возвращает инвойс без проверки владельца. Атакующий перебирает ID и читает чужие данные.

+30 XP
PHP
Exploit Fix
Обложка лабы: IDOR: Вертикальная эскалация привилегий Обложка лабы: IDOR: Вертикальная эскалация привилегий
IDOR
Лёгкая · ~15 минут

IDOR: Вертикальная эскалация привилегий

Админ-эндпоинты проверяют аутентификацию, но не роль пользователя.

+30 XP
Python
Exploit Fix
Обложка лабы: IDOR: Перебор заказов по последовательным ID Обложка лабы: IDOR: Перебор заказов по последовательным ID
IDOR
Средняя · ~30 минут

IDOR: Перебор заказов по последовательным ID

Заказы используют последовательные целочисленные ID без проверки владельца.

+60 XP
Python
Exploit Fix
Обложка лабы: IDOR: Mass Assignment — эскалация через JSON Обложка лабы: IDOR: Mass Assignment — эскалация через JSON
IDOR
Средняя · ~30 минут

IDOR: Mass Assignment — эскалация через JSON

API-эндпоинт обновления профиля принимает все JSON-поля, включая role.

+60 XP
Python
Exploit Fix
Обложка лабы: IDOR: Доступ к чужому счёту Обложка лабы: IDOR: Доступ к чужому счёту
IDOR
Лёгкая · ~15 минут

IDOR: Доступ к чужому счёту

Эндпоинт просмотра счёта не проверяет владельца. Получи данные чужого счёта.

+30 XP
Python
Exploit Fix

Включение файлов (Local/Remote File Inclusion (LFI/RFI))

3 лабораторные
Обложка лабы: Remote File Inclusion через include() с allow_url_include Обложка лабы: Remote File Inclusion через include() с allow_url_include
File Incl
Сложная · ~62 минуты

Remote File Inclusion через include() с allow_url_include

Параметр page передаётся в include() при включённом allow_url_include — атакующий загружает и выполняет произвольный PHP-код с удалённого сервера.

+90 XP
PHP
Exploit Fix
Обложка лабы: LFI через PHP stream wrappers (php://filter) Обложка лабы: LFI через PHP stream wrappers (php://filter)
File Incl
Средняя · ~32 минуты

LFI через PHP stream wrappers (php://filter)

Наивная фильтрация ../ не блокирует php://filter — атакующий читает исходники PHP-файлов в base64.

+60 XP
PHP
Exploit Fix
Обложка лабы: Local File Inclusion через include() Обложка лабы: Local File Inclusion через include()
File Incl
Лёгкая · ~17 минут

Local File Inclusion через include()

Параметр file передаётся напрямую в include() без валидации — атакующий читает произвольные файлы сервера.

+30 XP
PHP
Exploit Fix

Инъекция команд ОС (OS Command Injection)

15 лабораторных
Обложка лабы: Bypass Filters: Строгий WAF Обложка лабы: Bypass Filters: Строгий WAF
CMD Injection
Средняя · ~35 минут

Bypass Filters: Строгий WAF

Обход фильтрации пробелов и черного списка команд для RCE.

+60 XP
Go
Exploit Fix
Обложка лабы: Blind Command Injection через сетевую диагностику Обложка лабы: Blind Command Injection через сетевую диагностику
CMD Injection
Сложная · ~65 минут

Blind Command Injection через сетевую диагностику

Обработчик сетевой диагностики передаёт пользовательский ввод в sh -c без фильтрации. Результат команды не отображается — используйте time-based технику для подтверждения инъекции.

+90 XP
Go
Exploit Fix
Обложка лабы: Basic Command Injection: Сетевой пинг Обложка лабы: Basic Command Injection: Сетевой пинг
CMD Injection
Лёгкая · ~20 минут

Basic Command Injection: Сетевой пинг

Простая OS Command Injection через инструмент сетевой диагностики в админ-панели.

+30 XP
Go
Exploit Fix
Обложка лабы: Argument Injection в архиваторе файлов Обложка лабы: Argument Injection в архиваторе файлов
CMD Injection
Сложная · ~65 минут

Argument Injection в архиваторе файлов

Обработчик архивации файлов использует exec.Command без shell, но не фильтрует аргументы, начинающиеся с '-'. Атакующий может внедрить произвольные флаги команды tar.

+90 XP
Go
Exploit Fix
Обложка лабы: Code Injection: eval() в Node.js калькуляторе Обложка лабы: Code Injection: eval() в Node.js калькуляторе
CMD Injection
Сложная · ~65 минут

Code Injection: eval() в Node.js калькуляторе

Веб-калькулятор вычисляет пользовательские выражения через eval(). Это даёт атакующему полный RCE: доступ к process.env, child_process и любым модулям Node.js.

+90 XP
Node.js
Exploit Fix
Обложка лабы: Command Injection: Обход Blacklist-фильтра в Node.js Обложка лабы: Command Injection: Обход Blacklist-фильтра в Node.js
CMD Injection
Сложная · ~65 минут

Command Injection: Обход Blacklist-фильтра в Node.js

Функция ping в админ-панели защищена blacklist-фильтром, блокирующим пробелы и ключевые слова cat/flag/tail/less/more. Фильтр обходится через ;id, ;env и другие конструкции без пробелов.

+90 XP
Node.js
Exploit Fix
Обложка лабы: Blind Command Injection: time-based инъекция без вывода в Node.js Обложка лабы: Blind Command Injection: time-based инъекция без вывода в Node.js
CMD Injection
Средняя · ~35 минут

Blind Command Injection: time-based инъекция без вывода в Node.js

API сетевой диагностики Express выполняет ping через child_process.exec, но вывод не возвращается клиенту. Уязвимость подтверждается через задержку ответа (timing-based blind injection).

+60 XP
Node.js
Exploit Fix
Обложка лабы: Command Injection: Базовая инъекция команд в Node.js Обложка лабы: Command Injection: Базовая инъекция команд в Node.js
CMD Injection
Лёгкая · ~20 минут

Command Injection: Базовая инъекция команд в Node.js

Панель администратора содержит инструмент диагностики сети, передающий ввод напрямую в child_process.exec() без фильтрации.

+30 XP
Node.js
Exploit Fix
Обложка лабы: Code Injection через eval() в PHP-калькуляторе Обложка лабы: Code Injection через eval() в PHP-калькуляторе
CMD Injection
Сложная · ~65 минут

Code Injection через eval() в PHP-калькуляторе

Пользовательский ввод передаётся в eval(), позволяя выполнить произвольный PHP-код.

+90 XP
PHP
Exploit Fix
Обложка лабы: Command Injection: обход blacklist-фильтра WAF Обложка лабы: Command Injection: обход blacklist-фильтра WAF
CMD Injection
Средняя · ~35 минут

Command Injection: обход blacklist-фильтра WAF

Админ-панель содержит функцию ping с blacklist-фильтром (пробел, ;, cat, flag). Фильтр обходится через ${IFS}, $(), backticks и регистр имени переменной окружения.

+60 XP
PHP
Exploit Fix
Обложка лабы: Command Injection: Базовая инъекция команд Обложка лабы: Command Injection: Базовая инъекция команд
CMD Injection
Лёгкая · ~20 минут

Command Injection: Базовая инъекция команд

Панель администратора содержит функцию ping, передающую ввод напрямую в shell без фильтрации.

+30 XP
PHP
Exploit Fix
Обложка лабы: Command Injection: eval() Injection Обложка лабы: Command Injection: eval() Injection
CMD Injection
Средняя · ~35 минут

Command Injection: eval() Injection

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

+60 XP
Python
Exploit Fix
Обложка лабы: Command Injection: Обход Blacklist WAF Обложка лабы: Command Injection: Обход Blacklist WAF
CMD Injection
Сложная · ~65 минут

Command Injection: Обход Blacklist WAF

Функция ping защищена blacklist-фильтром, блокирующим пробелы и ключевые слова. Фильтр обходится через ${IFS}, brace expansion и другие техники.

+90 XP
Python
Exploit Fix
Обложка лабы: Command Injection: Слепая инъекция команд (Timing-based) Обложка лабы: Command Injection: Слепая инъекция команд (Timing-based)
CMD Injection
Средняя · ~35 минут

Command Injection: Слепая инъекция команд (Timing-based)

API сетевой диагностики выполняет команду shell, но не возвращает вывод. Уязвимость обнаруживается через задержку ответа (timing-based).

+60 XP
Python
Exploit Fix
Обложка лабы: Command Injection: Базовая инъекция команд Обложка лабы: Command Injection: Базовая инъекция команд
CMD Injection
Лёгкая · ~20 минут

Command Injection: Базовая инъекция команд

Панель администратора содержит функцию ping, передающую ввод напрямую в os.popen() без фильтрации.

+30 XP
Python
Exploit Fix

Обход директорий (Path Traversal)

15 лабораторных
Обложка лабы: Path Traversal (Чтение окружения) Обложка лабы: Path Traversal (Чтение окружения)
Path Traversal
Лёгкая · ~15 минут

Path Traversal (Чтение окружения)

Выход из каталога изображений и чтение окружения процесса через procfs.

+30 XP
Go
Exploit Fix
Обложка лабы: Path Traversal через двойное URL-кодирование Обложка лабы: Path Traversal через двойное URL-кодирование
Path Traversal
Сложная · ~60 минут

Path Traversal через двойное URL-кодирование

Обработчик скачивания файлов применяет filepath.Clean ДО URL-декодирования. Двойное кодирование (%252e%252e%252f) обходит проверку и позволяет читать произвольные файлы.

+90 XP
Go
Exploit Fix
Обложка лабы: Path Traversal (Иллюзия filepath.Clean) Обложка лабы: Path Traversal (Иллюзия filepath.Clean)
Path Traversal
Средняя · ~30 минут

Path Traversal (Иллюзия filepath.Clean)

Обход неумелого использования функции filepath.Clean.

+60 XP
Go
Exploit Fix
Обложка лабы: Path Traversal (Базовый) Обложка лабы: Path Traversal (Базовый)
Path Traversal
Лёгкая · ~15 минут

Path Traversal (Базовый)

Классическая уязвимость Path Traversal через os.Open.

+30 XP
Go
Exploit Fix
Обложка лабы: Path Traversal через абсолютный путь Обложка лабы: Path Traversal через абсолютный путь
Path Traversal
Лёгкая · ~15 минут

Path Traversal через абсолютный путь

Обработчик скачивания файлов проверяет только '..' в пути, но не блокирует абсолютные пути (/etc/passwd, /.env). Атакующий может читать любой файл на сервере.

+30 XP
Go
Exploit Fix
Обложка лабы: Path Traversal: Обход naive blacklist-фильтра в Express Обложка лабы: Path Traversal: Обход naive blacklist-фильтра в Express
Path Traversal
Средняя · ~30 минут

Path Traversal: Обход naive blacklist-фильтра в Express

Эндпоинт скачивания файлов фильтрует путь через replace('../', '') без флага /g — фильтр срабатывает только один раз, и любая цепочка ../../../ обходит его.

+60 XP
Node.js
Exploit Fix
Обложка лабы: Path Traversal: Базовый обход директорий в Express Обложка лабы: Path Traversal: Базовый обход директорий в Express
Path Traversal
Лёгкая · ~15 минут

Path Traversal: Базовый обход директорий в Express

Классическая Path Traversal в Express через fs.readFileSync(path.join(base, userInput)) без проверки выхода за пределы базовой директории.

+30 XP
Node.js
Exploit Fix
Обложка лабы: Path Traversal: чтение произвольных файлов через абсолютный путь Обложка лабы: Path Traversal: чтение произвольных файлов через абсолютный путь
Path Traversal
Средняя · ~30 минут

Path Traversal: чтение произвольных файлов через абсолютный путь

Эндпоинт скачивания изображений склеивает имя файла с базовой директорией через path.resolve. Из-за поведения path.resolve абсолютный аргумент отбрасывает базовый путь — атакующий читает любой файл сервера.

+60 XP
Node.js
Exploit Fix
Обложка лабы: Path Traversal через обход нормализации пути Обложка лабы: Path Traversal через обход нормализации пути
Path Traversal
Сложная · ~60 минут

Path Traversal через обход нормализации пути

Нормализация пути применяется ДО конкатенации с базовым каталогом — traversal-последовательности сохраняются после Clean, позволяя читать произвольные файлы.

+90 XP
PHP
Exploit Fix
Обложка лабы: Path Traversal в загрузке файлов Обложка лабы: Path Traversal в загрузке файлов
Path Traversal
Лёгкая · ~15 минут

Path Traversal в загрузке файлов

Обход пути через параметр file в эндпоинте загрузки файлов (PHP).

+30 XP
PHP
Exploit Fix
Обложка лабы: Path Traversal: абсолютные пути обходят blacklist Обложка лабы: Path Traversal: абсолютные пути обходят blacklist
Path Traversal
Средняя · ~30 минут

Path Traversal: абсолютные пути обходят blacklist

Сервер фильтрует '..' в запросах на скачивание, но не проверяет абсолютные пути — можно читать любой файл системы.

+60 XP
PHP
Exploit Fix
Обложка лабы: Path Traversal: /proc Leak Обложка лабы: Path Traversal: /proc Leak
Path Traversal
Сложная · ~60 минут

Path Traversal: /proc Leak

Обработчик скачивания файлов не блокирует /proc/self/environ — утечка секретов через переменные окружения.

+90 XP
Python
Exploit Fix
Обложка лабы: Path Traversal: Normpath Bypass Обложка лабы: Path Traversal: Normpath Bypass
Path Traversal
Средняя · ~30 минут

Path Traversal: Normpath Bypass

Обработчик использует os.path.normpath() до конкатенации, что не предотвращает выход за пределы директории.

+60 XP
Python
Exploit Fix
Обложка лабы: Path Traversal: Базовый обход директорий Обложка лабы: Path Traversal: Базовый обход директорий
Path Traversal
Лёгкая · ~15 минут

Path Traversal: Базовый обход директорий

Классическая уязвимость Path Traversal через os.path.join() без проверки выхода за пределы базовой директории.

+30 XP
Python
Exploit Fix
Обложка лабы: Path Traversal: Absolute Path Обложка лабы: Path Traversal: Absolute Path
Path Traversal
Лёгкая · ~15 минут

Path Traversal: Absolute Path

Обработчик скачивания файлов проверяет только '..' в пути, но не блокирует абсолютные пути. В Python os.path.join('/base', '/etc/passwd') возвращает '/etc/passwd' — второй аргумент абсолютный, base игнорируется.

+30 XP
Python
Exploit Fix

Загрязнение прототипа (Prototype Pollution)

3 лабораторные
Обложка лабы: Prototype Pollution → RCE через гаджет в EJS Обложка лабы: Prototype Pollution → RCE через гаджет в EJS
Proto Poll
Сложная · ~70 минут

Prototype Pollution → RCE через гаджет в EJS

Админ-панель SecureShop рекурсивно сливает JSON-патч предпочтений с in-memory объектом, что позволяет загрязнить Object.prototype. Превью дашборда через EJS читает опции компиляции через цепочку прототипов — это превращает prototype pollution в RCE-гаджет и даёт чтение LAB_FLAG.

+90 XP
Node.js
Exploit Fix
Обложка лабы: Prototype Pollution: загрязнение Object.prototype приводит к DoS публичных эндпоинтов Обложка лабы: Prototype Pollution: загрязнение Object.prototype приводит к DoS публичных эндпоинтов
Proto Poll
Сложная · ~70 минут

Prototype Pollution: загрязнение Object.prototype приводит к DoS публичных эндпоинтов

Express-эндпоинт POST /profile/settings делает рекурсивный merge JSON-объекта в per-user настройки без фильтрации __proto__. Атакующий загрязняет Object.prototype, после чего hot-path обработчик /catalog падает с 500 на каждом запросе — Denial of Service. Endpoint /api/incident-response регистрирует инцидент и выдаёт флаг.

+90 XP
Node.js
Exploit Fix
Обложка лабы: Prototype Pollution: загрязнение Object.prototype через recursive merge Обложка лабы: Prototype Pollution: загрязнение Object.prototype через recursive merge
Proto Poll
Средняя · ~40 минут

Prototype Pollution: загрязнение Object.prototype через recursive merge

Эндпоинт обновления пользовательских настроек в Express делает recursive merge тела запроса без фильтрации ключа __proto__. Загрязни Object.prototype.isAdmin и получи доступ к /admin/flag.

+60 XP
Node.js
Exploit Fix

Состояние гонки (Race Condition)

5 лабораторных
Обложка лабы: Promo Code Race Обложка лабы: Promo Code Race
Race
Средняя · ~45 минут

Promo Code Race

Состояние гонки при активации промокодов.

+60 XP
Go
Exploit Fix
Обложка лабы: Race Condition: Double-spend баланса Обложка лабы: Race Condition: Double-spend баланса
Race
Средняя · ~45 минут

Race Condition: Double-spend баланса

Race condition: чтение и списание баланса без транзакции позволяет двойную трату при параллельных запросах.

+60 XP
Go
Exploit Fix
Обложка лабы: Race Condition: Гонка при активации промокода в Express Обложка лабы: Race Condition: Гонка при активации промокода в Express
Race
Сложная · ~75 минут

Race Condition: Гонка при активации промокода в Express

Эндпоинт активации промокода в Express + better-sqlite3 содержит TOCTOU между проверкой счётчика и обновлением баланса. Получи бонус несколько раз параллельными запросами, накопи баланс и открой VIP-функцию с флагом.

+90 XP
Node.js
Exploit Fix
Обложка лабы: Promo Code Race Обложка лабы: Promo Code Race
Race
Средняя · ~45 минут

Promo Code Race

Состояние гонки при активации промокодов (PHP).

+60 XP
PHP
Exploit Fix
Обложка лабы: Promo Code Race Обложка лабы: Promo Code Race
Race
Средняя · ~45 минут

Promo Code Race

Состояние гонки при активации промокодов (Python).

+60 XP
Python
Exploit Fix

Отказ через регулярные выражения (Regular Expression Denial of Service (ReDoS))

2 лабораторные
Обложка лабы: ReDoS: catastrophic backtracking в URL-валидаторе профиля Обложка лабы: ReDoS: catastrophic backtracking в URL-валидаторе профиля
ReDoS
Сложная · ~65 минут

ReDoS: catastrophic backtracking в URL-валидаторе профиля

Express SecureShop валидирует адрес персонального сайта пользователя через регулярное выражение с вложенными квантификаторами в последней метке хоста. Тщательно подобранная строка вызывает catastrophic backtracking движка V8: event loop блокируется на секунды, инцидент фиксируется в журнале и admin-эндпоинт выдаёт флаг.

+90 XP
Node.js
Exploit Fix
Обложка лабы: ReDoS: catastrophic backtracking в проверке email профиля Обложка лабы: ReDoS: catastrophic backtracking в проверке email профиля
ReDoS
Средняя · ~35 минут

ReDoS: catastrophic backtracking в проверке email профиля

Сервис ProfileGuard валидирует email пользователя на стороне сервера через регулярное выражение с вложенными квантификаторами. Тщательно подобранная входная строка вызывает экспоненциальный backtracking движка V8, поток событий блокируется на десятки секунд, инцидент фиксируется в логе администратора — и вместе с ним выдаётся флаг.

+60 XP
Node.js
Exploit Fix

SQL-инъекция (SQL Injection)

22 лабораторные
Обложка лабы: SQL Injection: Обход WAF через mixed case Обложка лабы: SQL Injection: Обход WAF через mixed case
SQLi

SQL Injection: Обход WAF через mixed case

Case-sensitive blacklist SQL keywords обходится через смешанный регистр (uNiOn, sElEcT)

+90 XP
Go FREE
Exploit Fix
Обложка лабы: SQL Injection: Second-Order (хранимая инъекция) Обложка лабы: SQL Injection: Second-Order (хранимая инъекция)
SQLi

SQL Injection: Second-Order (хранимая инъекция)

Payload сохраняется в БД через безопасный INSERT, но выполняется в другом запросе через конкатенацию строк

+90 XP
Go FREE
Exploit Fix
Обложка лабы: Union-Based SQL Injection Обложка лабы: Union-Based SQL Injection
SQLi

Union-Based SQL Injection

Получение пароля администратора с использованием UNION SELECT

+60 XP
Go FREE
Exploit Fix
Обложка лабы: Time-Based Blind SQL Injection Обложка лабы: Time-Based Blind SQL Injection
SQLi

Time-Based Blind SQL Injection

Эксплуатация слепой SQL-инъекции, основанной на задержках времени ответа (Time-Based) в SQLite.

+90 XP
Go FREE
Exploit Fix
Обложка лабы: Blind Boolean SQL Injection Обложка лабы: Blind Boolean SQL Injection
SQLi

Blind Boolean SQL Injection

Слепая Boolean-based SQL-инъекция через Cookie купона

+90 XP
Go FREE
Exploit Fix
Обложка лабы: SQL Injection (Auth Bypass) Обложка лабы: SQL Injection (Auth Bypass)
SQLi

SQL Injection (Auth Bypass)

Обход авторизации с использованием SQL Injection

+30 XP
Go FREE
Exploit Fix
Обложка лабы: SQL Injection: WAF Bypass Обложка лабы: SQL Injection: WAF Bypass
SQLi
Сложная · ~65 минут

SQL Injection: WAF Bypass

Обход WAF с чёрным списком SQL-ключевых слов для эксплуатации SQL-инъекции в форме логина Express + better-sqlite3.

+90 XP
Node.js
Exploit Fix
Обложка лабы: SQL Injection: UNION SELECT через поиск каталога Обложка лабы: SQL Injection: UNION SELECT через поиск каталога
SQLi
Средняя · ~35 минут

SQL Injection: UNION SELECT через поиск каталога

Извлечение данных из таблицы users через UNION-based SQL injection в поиске каталога Express-приложения.

+60 XP
Node.js
Exploit Fix
Обложка лабы: SQL Injection: Second-Order через сохранённый username профиля Обложка лабы: SQL Injection: Second-Order через сохранённый username профиля
SQLi
Сложная · ~65 минут

SQL Injection: Second-Order через сохранённый username профиля

Second-order SQL injection: вредоносный username безопасно сохраняется при регистрации, но выполняется как часть SQL позже, когда обработчик профиля собирает запрос истории заказов конкатенацией.

+90 XP
Node.js
Exploit Fix
Обложка лабы: SQL Injection: Boolean-based Blind (Node.js) Обложка лабы: SQL Injection: Boolean-based Blind (Node.js)
SQLi
Сложная · ~65 минут

SQL Injection: Boolean-based Blind (Node.js)

Извлечение секрета через Boolean-based Blind SQLi в эндпоинте проверки купонов.

+90 XP
Node.js
Exploit Fix
Обложка лабы: SQL Injection: Обход аутентификации в Express Обложка лабы: SQL Injection: Обход аутентификации в Express
SQLi
Лёгкая · ~20 минут

SQL Injection: Обход аутентификации в Express

Обход аутентификации через классическую SQL-инъекцию в форме логина Express + better-sqlite3.

+30 XP
Node.js
Exploit Fix
Обложка лабы: SQL Injection — обход WAF blacklist Обложка лабы: SQL Injection — обход WAF blacklist
SQLi
Сложная · ~65 минут

SQL Injection — обход WAF blacklist

WAF с blacklist-фильтром блокирует SQL-ключевые слова, но обходится через mixed case.

+90 XP
PHP
Exploit Fix
Обложка лабы: UNION SQL Injection в поиске каталога Обложка лабы: UNION SQL Injection в поиске каталога
SQLi
Средняя · ~35 минут

UNION SQL Injection в поиске каталога

UNION-based SQL-инъекция через поиск товаров позволяет извлечь данные из таблицы пользователей.

+60 XP
PHP
Exploit Fix
Обложка лабы: Second-Order SQL Injection через профиль пользователя Обложка лабы: Second-Order SQL Injection через профиль пользователя
SQLi
Сложная · ~65 минут

Second-Order SQL Injection через профиль пользователя

Имя из БД подставляется в SQL через конкатенацию — Second-Order SQLi.

+90 XP
PHP
Exploit Fix
Обложка лабы: Boolean-based Blind SQL Injection через cookie купона Обложка лабы: Boolean-based Blind SQL Injection через cookie купона
SQLi
Сложная · ~65 минут

Boolean-based Blind SQL Injection через cookie купона

Значение купона из cookie подставляется в SQL-запрос без параметризации, позволяя извлечь данные через boolean-based blind инъекцию.

+90 XP
PHP
Exploit Fix
Обложка лабы: SQL Injection в форме входа Обложка лабы: SQL Injection в форме входа
SQLi
Лёгкая · ~20 минут

SQL Injection в форме входа

Обход аутентификации через SQL-инъекцию в форме логина.

+30 XP
PHP
Exploit Fix
Обложка лабы: SQL Injection: WAF Bypass Обложка лабы: SQL Injection: WAF Bypass
SQLi
Сложная · ~65 минут

SQL Injection: WAF Bypass

Обход WAF с чёрным списком SQL-ключевых слов для эксплуатации SQL-инъекции в форме логина.

+90 XP
Python
Exploit Fix
Обложка лабы: SQL Injection: UNION SELECT Обложка лабы: SQL Injection: UNION SELECT
SQLi
Средняя · ~35 минут

SQL Injection: UNION SELECT

Извлечение данных из БД через UNION SELECT в поиске каталога Flask-приложения.

+60 XP
Python
Exploit Fix
Обложка лабы: SQL Injection: Second-Order Обложка лабы: SQL Injection: Second-Order
SQLi
Сложная · ~65 минут

SQL Injection: Second-Order

SQL-инъекция второго порядка: payload сохраняется при регистрации и срабатывает при просмотре профиля.

+90 XP
Python
Exploit Fix
Обложка лабы: SQL Injection: Time-based Blind Обложка лабы: SQL Injection: Time-based Blind
SQLi
Сложная · ~65 минут

SQL Injection: Time-based Blind

Извлечение данных через Time-based Blind SQLi в форме восстановления пароля Flask-приложения.

+90 XP
Python
Exploit Fix
Обложка лабы: SQL Injection: Boolean-based Blind Обложка лабы: SQL Injection: Boolean-based Blind
SQLi
Средняя · ~35 минут

SQL Injection: Boolean-based Blind

Извлечение данных через Boolean-based Blind SQLi в эндпоинте проверки купонов.

+60 XP
Python
Exploit Fix
Обложка лабы: SQL Injection: Auth Bypass Обложка лабы: SQL Injection: Auth Bypass
SQLi
Лёгкая · ~20 минут

SQL Injection: Auth Bypass

Обход авторизации через SQL-инъекцию в форме логина Flask-приложения.

+30 XP
Python
Exploit Fix

Подделка запросов на стороне сервера (Server-Side Request Forgery)

13 лабораторных
Обложка лабы: SSRF Redirect: Обход валидации через HTTP-редирект Обложка лабы: SSRF Redirect: Обход валидации через HTTP-редирект
SSRF
Средняя · ~35 минут

SSRF Redirect: Обход валидации через HTTP-редирект

SSRF-уязвимость: валидация URL обходится через HTTP-редирект на внутренний адрес.

+60 XP
Go
Exploit Fix
Обложка лабы: SSRF Cloud Metadata: Доступ к метаданным облака Обложка лабы: SSRF Cloud Metadata: Доступ к метаданным облака
SSRF
Средняя · ~35 минут

SSRF Cloud Metadata: Доступ к метаданным облака

SSRF-уязвимость: неполная фильтрация IP позволяет обратиться к link-local адресу облачных метаданных (169.254.169.254).

+60 XP
Go
Exploit Fix
Обложка лабы: Bypass SSRF: Обход фильтров хоста Обложка лабы: Bypass SSRF: Обход фильтров хоста
SSRF
Средняя · ~35 минут

Bypass SSRF: Обход фильтров хоста

SSRF с обходом слабого фильтра хоста в URL и эксплуатация через альтернативные IP-адреса.

+60 XP
Go
Exploit Fix
Обложка лабы: Basic SSRF: Доступ к админке Обложка лабы: Basic SSRF: Доступ к админке
SSRF
Лёгкая · ~20 минут

Basic SSRF: Доступ к админке

Простая SSRF-уязвимость, позволяющая получить доступ к внутренним ресурсам сервера.

+30 XP
Go
Exploit Fix
Обложка лабы: SSRF: Обход проверки URL через HTTP-редирект в Node.js Обложка лабы: SSRF: Обход проверки URL через HTTP-редирект в Node.js
SSRF
Сложная · ~65 минут

SSRF: Обход проверки URL через HTTP-редирект в Node.js

Админ-форма импорта продуктового фида проверяет hostname URL и отвергает loopback и приватные сети, но fetch() автоматически следует HTTP-редиректам — внешний сервер атакующего перенаправляет на внутренний /admin/stats и утечка флага.

+90 XP
Node.js
Exploit Fix
Обложка лабы: SSRF: эксфильтрация облачных credentials через метаданные Обложка лабы: SSRF: эксфильтрация облачных credentials через метаданные
SSRF
Сложная · ~65 минут

SSRF: эксфильтрация облачных credentials через метаданные

SSRF в /fetch-url без блокировки link-local адресов — IMDS отдаёт IAM credentials.

+90 XP
Node.js
Exploit Fix
Обложка лабы: SSRF: Fetch Avatar в Express + better-sqlite3 Обложка лабы: SSRF: Fetch Avatar в Express + better-sqlite3
SSRF
Лёгкая · ~20 минут

SSRF: Fetch Avatar в Express + better-sqlite3

Обработчик загрузки аватара в Express делает fetch по пользовательскому URL без валидации — доступ к внутреннему /admin/stats и утечка флага.

+30 XP
Node.js
Exploit Fix
Обложка лабы: SSRF через обход проверки IP с помощью HTTP-редиректа Обложка лабы: SSRF через обход проверки IP с помощью HTTP-редиректа
SSRF
Сложная · ~65 минут

SSRF через обход проверки IP с помощью HTTP-редиректа

Приложение проверяет IP адрес при первом запросе, но cURL автоматически следует редиректам на внутренние адреса — атакующий обходит проверку через промежуточный сервер.

+90 XP
PHP
Exploit Fix
Обложка лабы: SSRF к облачным метаданным через обход проверки IP Обложка лабы: SSRF к облачным метаданным через обход проверки IP
SSRF
Средняя · ~35 минут

SSRF к облачным метаданным через обход проверки IP

Приложение блокирует только loopback-адреса, но не link-local 169.254.169.254 — атакующий читает облачные метаданные AWS.

+60 XP
PHP
Exploit Fix
Обложка лабы: SSRF через file_get_contents() в загрузке аватара Обложка лабы: SSRF через file_get_contents() в загрузке аватара
SSRF
Лёгкая · ~20 минут

SSRF через file_get_contents() в загрузке аватара

Приложение загружает аватар по URL без проверки — атакующий может обратиться к внутренним сервисам.

+30 XP
PHP
Exploit Fix
Обложка лабы: SSRF: Redirect Bypass Обложка лабы: SSRF: Redirect Bypass
SSRF
Средняя · ~35 минут

SSRF: Redirect Bypass

Обработчик загрузки аватара проверяет IP начального URL, но requests.get() автоматически следует редиректам — внешний сервер перенаправляет на внутренний адрес.

+60 XP
Python
Exploit Fix
Обложка лабы: SSRF: Cloud Metadata Bypass Обложка лабы: SSRF: Cloud Metadata Bypass
SSRF
Средняя · ~35 минут

SSRF: Cloud Metadata Bypass

SSRF-защита проверяет is_loopback но не is_link_local — доступ к cloud metadata 169.254.169.254.

+60 XP
Python
Exploit Fix
Обложка лабы: SSRF: Fetch Avatar Обложка лабы: SSRF: Fetch Avatar
SSRF
Лёгкая · ~20 минут

SSRF: Fetch Avatar

Обработчик загрузки аватара делает HTTP-запрос по пользовательскому URL без валидации — доступ к внутренним сервисам.

+30 XP
Python
Exploit Fix

Серверная инъекция шаблонов (Server-Side Template Injection (SSTI))

12 лабораторных
Обложка лабы: SSTI Email: Инъекция шаблона в email-сообщение Обложка лабы: SSTI Email: Инъекция шаблона в email-сообщение
SSTI
Сложная · ~70 минут

SSTI Email: Инъекция шаблона в email-сообщение

SSTI-уязвимость: пользовательский ввод передаётся в template.Parse(), позволяя читать серверные данные.

+90 XP
Go
Exploit Fix
Обложка лабы: Basic SSTI: Кастомное приветствие Обложка лабы: Basic SSTI: Кастомное приветствие
SSTI
Лёгкая · ~25 минут

Basic SSTI: Кастомное приветствие

Утечка конфиденциальных данных из контекста страницы через небезопасную обработку шаблонов.

+30 XP
Go
Exploit Fix
Обложка лабы: Advanced SSTI: Вызов методов и доступ к контексту Обложка лабы: Advanced SSTI: Вызов методов и доступ к контексту
SSTI
Средняя · ~40 минут

Advanced SSTI: Вызов методов и доступ к контексту

Эксплуатация SSTI через вызов методов объектов в контексте шаблона.

+60 XP
Go
Exploit Fix
Обложка лабы: SSTI: Pug Template Engine в Express Обложка лабы: SSTI: Pug Template Engine в Express
SSTI
Сложная · ~70 минут

SSTI: Pug Template Engine в Express

Профиль SecureShop рендерит пользовательское приветствие через pug.render() — SSTI в JavaScript-окружении с чтением секретов и RCE.

+90 XP
Node.js
Exploit Fix
Обложка лабы: SSTI: внедрение JavaScript-кода в EJS-шаблон Обложка лабы: SSTI: внедрение JavaScript-кода в EJS-шаблон
SSTI
Сложная · ~70 минут

SSTI: внедрение JavaScript-кода в EJS-шаблон

Server-Side Template Injection в Express + EJS: пользовательский ввод используется как сам EJS-шаблон, что позволяет выполнить произвольный JavaScript на сервере и прочитать переменные окружения.

+90 XP
Node.js
Exploit Fix
Обложка лабы: SSTI: User Greeting Обложка лабы: SSTI: User Greeting
SSTI
Лёгкая · ~25 минут

SSTI: User Greeting

Пользовательское приветствие в SecureShop рендерится через nunjucks.renderString() — SSTI позволяет выполнять JS и читать переменные окружения.

+30 XP
Node.js
Exploit Fix
Обложка лабы: SSTI: Twig createTemplate() Injection Обложка лабы: SSTI: Twig createTemplate() Injection
SSTI
Средняя · ~40 минут

SSTI: Twig createTemplate() Injection

Пользовательский ввод передаётся в Twig createTemplate(), что позволяет выполнить произвольный код на сервере.

+60 XP
PHP
Exploit Fix
Обложка лабы: SSTI: Server-Side Template Injection via eval() Обложка лабы: SSTI: Server-Side Template Injection via eval()
SSTI
Лёгкая · ~25 минут

SSTI: Server-Side Template Injection via eval()

Greeting template executed via eval() allows arbitrary PHP code injection.

+30 XP
PHP
Exploit Fix
Обложка лабы: SSTI: Report Template RCE Обложка лабы: SSTI: Report Template RCE
SSTI
Сложная · ~70 минут

SSTI: Report Template RCE

Пользовательский шаблон отчёта рендерится через render_template_string() — SSTI позволяет выполнить произвольный код через цепочку __subclasses__.

+90 XP
Python
Exploit Fix
Обложка лабы: SSTI: Format String Injection Обложка лабы: SSTI: Format String Injection
SSTI
Лёгкая · ~25 минут

SSTI: Format String Injection

Форма восстановления пароля использует str.format() с пользовательским шаблоном — атакующий может читать атрибуты объектов через {username.__class__.__init__.__globals__}.

+30 XP
Python
Exploit Fix
Обложка лабы: Blind SSTI: Notification Templates Обложка лабы: Blind SSTI: Notification Templates
SSTI
Средняя · ~40 минут

Blind SSTI: Notification Templates

Админ-шаблон email-уведомлений рендерится через render_template_string() — слепая SSTI через time-based payload.

+60 XP
Python
Exploit Fix
Обложка лабы: SSTI: User Greeting Обложка лабы: SSTI: User Greeting
SSTI
Лёгкая · ~25 минут

SSTI: User Greeting

Пользовательское приветствие рендерится через render_template_string() — SSTI позволяет читать секреты и выполнять код.

+30 XP
Python
Exploit Fix

Манипуляция типами (Type Juggling / Type Confusion)

3 лабораторные
Обложка лабы: Type Juggling: ошибочная интерпретация strcmp() Обложка лабы: Type Juggling: ошибочная интерпретация strcmp()
Type Jug
Средняя · ~35 минут

Type Juggling: ошибочная интерпретация strcmp()

На PHP 8.2 эндпоинт /promo приводит ввод к строке, но принимает `strcmp(...) < 1`: любой отрицательный результат ошибочно считается совпадением секретного токена.

+60 XP
PHP
Exploit Fix
Обложка лабы: Type Juggling: JSON-аутентификация с loose comparison Обложка лабы: Type Juggling: JSON-аутентификация с loose comparison
Type Jug
Средняя · ~35 минут

Type Juggling: JSON-аутентификация с loose comparison

JSON-API логина сравнивает пароль с хешем через loose == . В БД хранится хеш-строка вида 0e830... (magic hash), которая коэрсится в число 0.0. Отправив {"password": 0}, атакующий заходит как admin.

+60 XP
PHP
Exploit Fix
Обложка лабы: Type Juggling: Magic Hash Collision Обложка лабы: Type Juggling: Magic Hash Collision
Type Jug
Лёгкая · ~20 минут

Type Juggling: Magic Hash Collision

API-логин через токен использует loose comparison (==) между md5-хэшами. Magic hash вида 0e[0-9]+ интерпретируется как научная нотация (0.0), что приводит к коллизии хэшей и обходу аутентификации.

+30 XP
PHP
Exploit Fix

Опасная загрузка файлов (Unrestricted File Upload)

11 лабораторных
Обложка лабы: File Upload Bypass через двойное расширение Обложка лабы: File Upload Bypass через двойное расширение
File Upload
Средняя · ~32 минуты

File Upload Bypass через двойное расширение

Обработчик загрузки использует filepath.Ext() для проверки расширения, но эта функция возвращает только последнее расширение. Файл test.html.jpg проходит проверку, а Go http.FileServer может определить Content-Type по первому расширению.

+60 XP
Go
Exploit Fix
Обложка лабы: File Upload Bypass через подмену Content-Type Обложка лабы: File Upload Bypass через подмену Content-Type
File Upload
Средняя · ~32 минуты

File Upload Bypass через подмену Content-Type

Обработчик загрузки файлов проверяет только расширение (.jpg, .png, .gif), но не реальное содержимое файла. HTML-файл с расширением .jpg будет принят и отдан браузеру.

+60 XP
Go
Exploit Fix
Обложка лабы: File Upload: Обход расширений и Path Traversal Обложка лабы: File Upload: Обход расширений и Path Traversal
File Upload
Сложная · ~62 минуты

File Upload: Обход расширений и Path Traversal

Сервер принимает файлы с расширением .jpg, но слепо доверяет имени файла из Content-Disposition. Используйте Path Traversal, чтобы подбросить свой токен конфигурации и получить флаг.

+90 XP
Go
Exploit Fix
Обложка лабы: File Upload: обход проверки через подделку Content-Type Обложка лабы: File Upload: обход проверки через подделку Content-Type
File Upload
Сложная · ~62 минуты

File Upload: обход проверки через подделку Content-Type

Загрузчик изображений товара доверяет MIME-типу, который пришёл в заголовке Content-Type части multipart-формы. Атакующий подделывает заголовок и загружает HTML с активным контентом, выдавая его за PNG.

+90 XP
Node.js
Exploit Fix
Обложка лабы: File Upload: Path Traversal в имени файла (Express + busboy) Обложка лабы: File Upload: Path Traversal в имени файла (Express + busboy)
File Upload
Средняя · ~32 минуты

File Upload: Path Traversal в имени файла (Express + busboy)

Загрузка аватара без санитизации имени файла позволяет перезаписать серверные шаблоны через path traversal в filename.

+60 XP
Node.js
Exploit Fix
Обложка лабы: .htaccess Upload — RCE через перезапись конфигурации Apache Обложка лабы: .htaccess Upload — RCE через перезапись конфигурации Apache
File Upload
Сложная · ~62 минуты

.htaccess Upload — RCE через перезапись конфигурации Apache

Загрузка .htaccess позволяет выполнять PHP-код внутри файлов с произвольным расширением.

+90 XP
PHP
Exploit Fix
Обложка лабы: File Upload: Content-Type Bypass Обложка лабы: File Upload: Content-Type Bypass
File Upload
Средняя · ~32 минуты

File Upload: Content-Type Bypass

Загрузка файлов проверяет только расширение, но не содержимое. Атакующий может загрузить HTML/JS в файле с расширением .jpg.

+60 XP
PHP
Exploit Fix
Обложка лабы: File Upload: Path Traversal через имя файла Обложка лабы: File Upload: Path Traversal через имя файла
File Upload
Лёгкая · ~17 минут

File Upload: Path Traversal через имя файла

Загрузка аватара использует оригинальное имя файла без санитизации. Подмени filename в multipart-запросе для перезаписи шаблона и получения RCE.

+30 XP
PHP
Exploit Fix
Обложка лабы: File Upload: Webshell через загрузку в templates/ Обложка лабы: File Upload: Webshell через загрузку в templates/
File Upload
Средняя · ~32 минуты

File Upload: Webshell через загрузку в templates/

Загрузка документов сохраняет файлы в директорию templates/ без проверки содержимого. Просмотр файлов через render_template() позволяет выполнить Jinja2 SSTI.

+60 XP
Python
Exploit Fix
Обложка лабы: File Upload: обход проверки расширения через Content-Type Обложка лабы: File Upload: обход проверки расширения через Content-Type
File Upload
Лёгкая · ~17 минут

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

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

+30 XP
Python
Exploit Fix
Обложка лабы: File Upload: Path Traversal в имени файла Обложка лабы: File Upload: Path Traversal в имени файла
File Upload
Средняя · ~32 минуты

File Upload: Path Traversal в имени файла

Загрузка аватара без санитизации имени файла позволяет перезаписать серверные шаблоны через path traversal в filename.

+60 XP
Python
Exploit Fix

Безопасность WebSocket (WebSocket Security)

2 лабораторные
Обложка лабы: WebSocket Message Injection (XSS via innerHTML) Обложка лабы: WebSocket Message Injection (XSS via innerHTML)
WebSocket
Средняя · ~40 минут

WebSocket Message Injection (XSS via innerHTML)

WebSocket chat broadcasts unsanitized messages. Client renders via innerHTML, enabling XSS.

+60 XP
Go
Exploit Fix
Обложка лабы: WebSocket Security: Угон сокета (CSWSH) Обложка лабы: WebSocket Security: Угон сокета (CSWSH)
WebSocket
Сложная · ~70 минут

WebSocket Security: Угон сокета (CSWSH)

Сервер открывает WebSocket-соединение для отправки приватных уведомлений, но забывает проверять Origin. Воспользуйтесь ботом администратора, чтобы заставить его открыть вашу вредоносную страницу и угнать флаг через сокет.

+90 XP
Go
Exploit Fix