Дмитрий DarkByte Москин

Мой блог, да.
logo

RuCTF 2013 Quals - random 200 & 300 writeup

Опубликовано 10.03.2013 автором Дмитрий Москин
RAND200 Delivery
Name the person that will receive this package:
|| | || || || | | || | | | | || |
||||||||||||||||||||||||||||||||||||||
| | || | | | ||| | | | ||| | ||

Были разные идеи по поводу того, что представлено на схеме, но на самом деле это оказался штрихкод RM4SCC.

По описанию из википедии считываем текст, получается: SE11BDJB и контрольная сумма F (считаем - совпадает).

Гуглим SE11BD, находим Britain's Security Services (которое MI6). Последние две буквы это имя и фамилия получателя, коим оказывается James Bond.


RAND300 Little things
Find the key


На первый взгляд кажется, что всё очевидно, ведь скрипт простой, всего лишь посимвольно проверяется строка длинной 40 символов, которую передали скрипту. Но вряд-ли за такую задачу дали бы 300 баллов. И действительно, флаг 7b5f563b913e0df171aa51cc55e7ca4ce0dc6ad8 не подходит.

Но если внимательно посмотреть на скрипт, то можно заметить одну описку в строке:
let a10 = check({h[6] as char == '3' && h[9] as char == '1';}.to_str());

Поставлена лишняя ";", чем нарушена проверка символов под индексами 6 и 9. Вместо них можно поставить что угодно, и проверка всё равно вернёт true.


Соответственно генерируем все возможные варианты флагов (256 штук) и ставим брутиться (можно было через гугл). В итоге один из хешей ломается: semicolon.