← Все комнаты Путь «Защита (код)» →
СреднийЗащита (код) Код Осенний CTF

Свой или чужой

Прогресс комнаты 0 / 4
Задание 1Введение

Цель: Проверять принадлежность адреса подсети.

Напишите cidr_contains(cidr, ip): принадлежит ли IPv4-адрес подсети вида 10.0.0.0/8. Вход корректен.

Задание 2Теория и инструменты

Подсеть a.b.c.d/n — это все адреса с одинаковыми первыми n битами.

Такие проверки нужны в белых списках, файрволах и защите от SSRF.

Инструменты

  • Python 3 или Node.js
  • Встроенные тесты в редакторе

Больше теории — в разделе «Обучение: Защита (код)».

Задание 3Практика: напишите код

Примеры

Пример 1
cidr_contains("10.0.0.0/8", "10.20.30.40")
→ true
Пример 2
cidr_contains("10.0.0.0/8", "11.0.0.1")
→ false

Ещё 8 скрытых тестов.

solution
Ctrl+Enter — отправить Войдите, чтобы отправить

Пошаговый план — открывайте по одному шагу

  1. 1
    Переведите адреса в 32-битные числа.

Подсказки — каждая до решения стоит −25 очков

Задание 4Как защититься

В продакшене используйте ipaddress.ip_network(...) — меньше шансов ошибиться на граничных случаях.

Разборы участников

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