CTF. Курс молодого бойца. Начальные задания категории Crypto #4.

CTF. Курс молодого бойца. Начальные задания категории Crypto #4.

https://t.me/hacker_sanctuary

Данный пост будет носить практический характер. В нём мы рассмотрим задания начального уровня в категории Crypto. Данные задания часто встречаются в простых CTF'ах и иногда, как разминочные, в более крупных.

Задания будут взяты с известного сайта с различными задачами (CTF и не только) - https://www.root-me.org/

Будем решать задачи из категории: Cryptanalysis

Прямая ссылка: https://www.root-me.org/en/Challenges/Cryptanalysis/

Предыдущие задания из данной категории вы можете найти на канале.

Часть 1 - https://telegra.ph/CTF-Kurs-molodogo-bojca-Nachalnye-zadaniya-kategorii-Crypto-08-19

Часть 2 - https://telegra.ph/CTF-Kurs-molodogo-bojca-Nachalnye-zadaniya-kategorii-Crypto-2-09-01

Часть 3 - https://telegra.ph/CTF-Kurs-molodogo-bojca-Nachalnye-zadaniya-kategorii-Crypto-3-09-25

Пример 1.

Решим задание "ELF32 - PID encryption".

Прямая ссылка - https://www.root-me.org/en/Challenges/Cryptanalysis/ELF32-PID-encryption

Смотрим описание.

В описании говориться, что "плохая идея использовать предсказуемые материалы(значения)", а название задания объявляет, что будет использовать "PID encryption", то есть для шифрования данных используется номер текущего процесса. Также, нам дан исходник и возможность подключиться по SSH к серверу с заданием.

Подключаемся и глянем на исходник уже на машине.

Всё довольно просто, используется функция crypt с аргументами pid и строкой "$1$awesome", pid - номер текущего процесса. Результат работы функции сравнивается с переданной при запуске строкой.

Предсказуемость pid'а заключается в том, что все pid'ы лежат в определённом диапазоне (от о до 32768) при стандартных настройках ядра (будем полагать, что они стандартны).

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

Генерируем выражение от pid'a 27001

Теперь напишем бесконечный цикл с запуском исполняемого файла.

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

Задание решено.

Report Page