2.1 KiB
SortKey Station
Складская станция сортирует этикетки и поддерживает старый формат ключей +POS.C. В ELF sortkey-station находим приведение позиции к знаковому 16-битному числу. Большая положительная позиция после него превращается в отрицательное смещение.
Решение
При проверке старого ключа сервис обращается к key_buf + (int16_t)pos и сравнивает строку по этому адресу с SORT-EXPORT. Если подобрать pos, чтение уйдёт перед началом ключа — в профиль партии, содержимое которого можно задать.
Нужная область находится за 32 байта до key_buf. В 16-битной арифметике:
65504 - 65536 = -32.
Значит, подходит ключ +65504.0. Теперь размещаем строку допуска в профиле:
profile = b"A" * 64 + b"SORT-EXPORT"
legacy_key = b"+65504.0"
Строка допуска начинается после 64 байт заполнения в профиле, по смещению -32 от начала key_buf.
В 1) set batch profile отправляем профиль, затем в 2) set legacy sort key задаём +65504.0. Вызываем 3) dry-run sort, чтобы сервис проверил допуск, и забираем результат через 4) export station batch.
Проверка читает SORT-EXPORT из подставленного профиля и принимает его за разрешение на экспорт. В ответе получаем флаг.
Флаг
caplag{legacy_sort_pointer_found_the_batch_grant}