Files
2026-09-17 00:50:07 +03:00

2.5 KiB
Raw Permalink Blame History

RegexScope

PWN easy

RegexScope — стенд SOC-команды для проверки правил фильтрации. В памяти за тестовым событием лежит случайный токен экспорта. В ELF regexscope готового токена нет, поскольку он генерируется при старте. Движок правил позволяет проверять байты за пределами события.

Решение

Поля состояния расположены подряд:

char event[32];
char token[8];

Сам токен занимает шесть символов из A-Z0-9. Правило SCOPE <off> <hex> сравнивает заданный байт с event[strlen(event) + off] и отвечает MATCH или MISS. Верхней границы индекса нет, поэтому получаем оракул чтения по одному байту.

В 1) set test event отправляем 30 символов A. Тогда начало токена находится на два байта дальше конца строки:

strlen(event) + off = 30 + (i + 2) = 32 + i

Для каждой позиции i от 0 до 5 перебираем алфавит. Для каждой попытки выбираем пункт 2, дожидаемся rule: и передаём строку правила. Например, проверка первого байта на A выглядит так:

SCOPE 2 41

41 — hex-код ASCII A. При MISS пробуем следующий символ, при MATCH сохраняем найденный и переходим к следующему смещению. Верхняя граница — 6 × 36 = 216 проверок.

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

Собираем шесть символов и передаём их в 3) export scope. Сервис сравнивает строку с настоящим токеном и отдаёт флаг.

Солвер.

Флаг

caplag{scoped_matcher_read_the_guard_token}