![]() |
Всем привет! Сегодня рассмотрим задание "Абсолютная безопасность" из раздела криптографии на Antichat. Итак, приступим! Ищем вектор Нам дается IP'шник, и три подсказки:
https://forum.antichat.xyz/attachmen...2d6721b0af.png Поэтому смотрим на вторую подсказку и запускаем netcat (для винды - ncat) и подключаемся: Код:
ncat 62.173.140.174 11000https://forum.antichat.xyz/attachmen...ac9552403e.png Python: Код:
asynchttps://forum.antichat.xyz/attachmen...1d62c83bdf.png За его ответ судить не берусь, но общее понимание появилось. Сначала функция генерирует 23 рандомных байта, далее она делает XOR байта первого символа флага с первым сгенерированным байтом, потом тоже самое со вторым и.т.д. После XOR'ов всех символов флага программа проверяет на равенство каждый байт зашифрованного флага и изначального. Если таковой есть, то печатает "Leaked some plaintext". Получается, что в каждом зашифрованном флаге на своем месте нет ни одного символа от изначального. Т.е если флаг - Antichat{eto_ne_flag}, то первый байт (43 для "C") нам никогда не встретится. Тоже самое и для остальных символов. Сбор флагов Тут мы обращаемся к третьей подсказке "Я думаю, стоит накапливать зашифрованные флаги". Осталось определиться с количеством собираемых флагов. Слышал, что 5000 достаточно, но я определил для себя - 30000. Так сказать, наверняка . Ясно дело, что вручную это ооочень долго, поэтому автоматизируем, используя pynput для ввода с клавиатуры. Сам код: Python: Код:
importКод:
ncat 62.173.140.174 11000 -o dump.txtЖдем. Сборка 30000 шифрованных флагов у меня заняла ≈ 1.5-2 часа. По окончании сбора флагов получаем файл. Теперь нам надо почистить файл от лишнего, оставив только флаги. Открываем VSCode и удаляем ненужное. Я не стал это автоматизировать, т.к делается это за две минуты простой заменой. Наш дамп до: https://forum.antichat.xyz/attachmen...b2ec4e8bae.png После: https://forum.antichat.xyz/attachmen...a55acd4cde.png Находим флаг Теперь создаем второй скрипт для нахождения флага: Python: Код:
startДалее достаем все hex-значения символов из дампа и находим единственное неиспользованное. Его перегоняем в ASCII и добавляем в text. Запускаем, получаем флаг, сдаем. Спасибо за прочтение! Есть критика или пожелание - пишите!) |
[QUOTE]
Kevgen сказал(а): Всем привет! Сегодня рассмотрим задание "Абсолютная безопасность" из криптографии от Antichat. Итак, приступим! Ищем вектор Нам дается IP'шник, и три подсказки:
Поэтому смотрим на вторую подсказку и запускаем netcat (для винды - ncat) и подключаемся: Код:
ncat 62.173.140.174 11000Python: Код:
asyncЗа его ответ судить не берусь, но общее понимание появилось. Сначала функция генерирует 23 рандомных байта, далее она делает XOR байта первого символа флага с первым сгенерированным байтом, потом тоже самое со вторым и.т.д. После XOR'ов всех символов флага программа проверяет на равенство каждый байт зашифрованного флага и изначального. Если таковой есть, то печатает "Leaked some plaintext". Получается, что в каждом зашифрованном флаге на своем месте нет ни одного символа от изначального. Т.е если флаг - Antichat{eto_ne_flag}, то первый байт (43 для "C") нам никогда не встретится. Тоже самое и для остальных символов. Сбор флагов Тут мы обращаемся к третьей подсказке "Я думаю стоит накапливать зашифрованные флаги". Осталось определиться с количеством собираемых флагов. Слышал, что 5000 достаточно, но я определил для себя - 30000. Так сказать, наверняка . Ясно дело, что вручную это ооочень долго, поэтому автоматизируем, используя pynput для ввода с клавиатуры. Сам код: Python: Код:
importРешалка: Python: Код:
with |
обоим спасибо!
|
Сорян, что вмешиваюсь. Спасибо за райтап, но вот сборы ответов мне не удалось собрать ни первым, ни вторым способом, потэтому я написал свой скрипт [S]с блэкджеком и...[/S] Пришлось совмещать алгоритмы, зато в одном месте все и сразу =)
Может быть кому-то пригодится. Python: Код:
from |
| Время: 01:35 |