Skip to content

Latest commit

 

History

History
52 lines (35 loc) · 2.63 KB

File metadata and controls

52 lines (35 loc) · 2.63 KB

Военный криптограф

Событие Название Категория Сложность
VKA-CTF`2020 Военный криптограф Криптография АБИТУРА

Описание

Автор: Lex_SD

Все довольно просто. Вот программа, которая хеширует данные (main.py), вот слово, которое необходимо захешировать (cybersecurity). Правда программу эту писал какой-то курсант, так что я бы не ручался за корректность ее работы. Но вы конечно проверьте и сдайте хеш вместо флага.

Решение

Программа написана на ЯП python, все исходные коды на руках. Пытаемся захешировать слово, которое было дано по заданию. Получаем хеш:

cybersecurity -> c72336d6ed47926dcce8c1ac3d6986ec

Пытаемся сдать флаг, выясняем, что он неверные.

После внимательно читаем описание и понимаем, что в программе могла быть допущена ошибка.

Начинаем исследовать исходный код. Понимаем, что main.py и mw.py не представляют интереса - предназначены для вывода gui через PyQt. Переходим к файлу hash.py.

Пристально изучаем код и понимаем, что это реализация md5 алгоритма по соответствующему RFC. Здесь либо сразу используем любую программу для подсчета md5, либо продолжаем искать в чем подвох. Ищем отличия. Не трудно будет заметить этот участок кода:

    # step 3
    # init buffer (little endian)
    A = 0xcafebabe
    B = 0xdeadbeef
    C = 0x13371337
    D = 0xbaadc0de

Понимаем, что константы были изменены. Меняем обратно на стандартные:

	A = 0x67452301
	B = 0xefcdab89
	C = 0x98badcfe
	D = 0x10325476

Снова запускаем программу и вычисляем хеш:

cybersecurity -> b03a894e101746d09277f1f255cc8a40

Сдаем как флаг и убеждаемся, что он верный.

Флаг:

b03a894e101746d09277f1f255cc8a40