Pull to refresh

Решения CTF 2023 от «Доктор Веб». Часть 2

Reading time3 min
Views2.1K

Друзья, продолжаем публиковать решения нашего CTF-марафона! В нем было пять уровней сложности, в каждом по пять заданий — всего 25 заданий. Каждую неделю выкладывать по 5 решений — сегодня рассказываем о втором уровне сложности. 

Результаты марафона мы подвели в начале апреля, но задания все еще доступны — и вы можете попробовать решить их для себя.

CTF-2023 от «Доктор Веб»: задания уровня Rare

1. Supreme victory 

Для решения этого задание необходимо понимать принципы работы формата PDF: структура таких файла завязана на определенных объектах, и чтение файла всегда начинается с первого объекта:

Когда найден первый объект, сразу становится видным подозрительное действие “OpenAction” для объекта с порядковым номером 15.

После нужно найти этот объект №15 — им оказывается обфусцированный JS-код. Обфускация довольно простая (obfuscate.io), и следующим шагом можно попробовать ее деобфусцировать. Например, в deobfuscate.io — здесь получится как минимум переименовать названия функций из Hex в более читабельный формат.

Затем необходимо деобфусцировать вручную — с помощью дебага, запуска и, в случае хорошего владения JS, статического анализа кода,

Флаг: https://deobfuscate.io/ 

2. De-DoS me 

Если открыть файл в Hex-редакторе, можно увидеть измененный dos-stub, который вшит в каждый mzpe-файл — легаси платформы msdos.

Если перейти по этой ссылке из dos-stub, то нас отправит на рикролл! 

Задание проверяет понимание, как работает формат mzpe. Когда обнаружится измененный dos-stub, его сразу можно запустить в любом эмуляторе msdox —например, в DOSbox.

Запускаем наш файл — и получаем флаг! 

Также можно вручную пройтись по всему asm-коду и найти флаг без эмуляции DOS — но это решение требует большего количества времени.

Флаг: DrWeb{un0_D05_D05_D05_m0d3} 

3. Ping 

Открывая данный файл мы можем увидеть простенькую пародию на pong. 

Чтобы отреверсить какую либо игрушку надо бы в первую очередь узнать, на каком движке она была написана. Первое, что приходит в голову - это по быстрому проверить строки. По строкам можно быстр определить, что это godot. 

Чтобы узнать, как декомпилировать Godot, можно обратиться к Google — и найти, например, этот репозиторий. После декомпиляции можно смотреть скрипты.

Если вкратце, то нас интересует скрипт ball.gd 

Забиваем куда-нибудь байты, чтобы посмотреть их значение в ASCII и получаем флаг:

Флаг: DrWeb{P1n6_M3_P0n6_M3} 

4. Glycine? 

Си код, закомпиленный визуал студио, сверху накрыт нашим пакером. 

Внутри уязвимый код, который требует ввести пароль, для того, чтобы отобразить флаг в base64. Нам даны нужные для входа пароль, который к сожалению не подходит. А еще даны адреса всех используемых переменных.  

Если ввести пароль, который дан в задании, то результат будет следующим:

Нам требуется переполнить буффер так, чтобы заполнить нужную переменную паролем и получить таким образом флаг

Пример строчки для получения правильного фалага: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAae1ce347d9ca43b41c112a658cb3b03 

Флаг: DrWeb{3xpl0173d_0r_R3v3r53d?} 

5. Back to the Future 

В этом задании с нашей стороны была допущена ошибка — поэтому мы помогали участникам CTF как могли.

Задание представляет из себя 64 битный ELF и подразумевает подбор правильной даты и подстановку этой даты в код, в виде числового значения, сам же timestamp должен сформировать часть флага: 

Обведенный участок кода должен проверять нужную дату по годам</span>дням</span>неделям и тд, после чего вылетать, если дата не правильная. Если дата правильная, то запустится следующий участок кода, формирующий флаг: 

Проблема в задании заключается в разнице форматов time_t и структуры struct tm, в частности в разной точке отсчета (в time_t отсчет начинается с 1/1/1970, в структуре c 1900 года). 

В итоге, если не думать об этом и посчитать руками, то мы получим следующий timestamp (мы часто реверсим в статике, но не всегда знаем все подводные камни). 

Переводим его во флаг, подобно тому, как это делает код: 

Флаг: DrWeb{!T1M3_M4ch1n3} 

Tags:
Hubs:
Total votes 4: ↑4 and ↓0+4
Comments1

Articles

Information

Website
www.drweb.ru
Registered
Founded
Employees
Unknown
Location
Россия