все заметки

Learning Bear: Speedrun

2025.03.14

Это уже после драки кулаками верчу. Для знаний.

Задание Speedrun (speed.py):

Find the correct input! Piece of cake!

Введеный флаг сравнивается с LnrhMBtVu2{eaYCwrWJsv5bd}. Сразу бросились в глаза фигурные скобки. И в коде интересное:

range(0, 25, 5) # (start, stop, step)

Берется каждый пятый символ из сравнения: LB{wv, что подходит под формат флага.

А дальше, чисто логически, начинаем с индекса +1.

Итого: LB{wvnter5rVaWbhuYJdM2Cs}

Но, потом мне стало интересно разобраться в самом коде. И, оказалось, что если вместо флага, мы подсовываем строку сравнения, то в результате получается флаг:

t2fwnxONFmEfZAy4 = "LnrhMBtVu2{eaYCwrWJsv5bd}"\nprint(''.join([chr(RDnvKyM7jwSOljJs) for RDnvKyM7jwSOljJs in WQP0LZiNL8IF35wt.asarray(\n\t\t[list(t2fwnxONFmEfZAy4[mzzFQ74bJJG0o4qE:mzzFQ74bJJG0o4qE + 5].encode()) for mzzFQ74bJJG0o4qE in\n\t\t range(0, 25, 5)]).transpose().reshape(-1)]))

Действительно получился реверс.