Как Пройти Кибертесты На Checkpoint

Привет всем, я Никита Куртин , куратор Израильской высшей школы информационных технологий и безопасности ХакерУ Этим летом ведущая израильская компания по информационной безопасности Контрольно-пропускной пункт , опубликовал серию кибертестов.

Задания были разделены на шесть категорий: • Логика • Интернет • Программирование • Сеть • Реверс • Сюрприз Две задачи по каждому направлению.

В этом посте я расскажу, как я прошёл всего четыре теста, в следующих трёх: Контрольно-пропускной пункт До этого он уже заслужил уважение и интерес с моей стороны, поэтому я решил взять на себя эти задачи.

Однако из-за плотного графика я мог позволить себе взять на себя только 8 задач из 12 (из четырех разных категорий).

И мне удалось решить 7 из них.

Официально конкурс завершился к концу сентября 2018 года.



Как Пройти Кибертесты На Checkpoint

Поэтому теперь с чистой совестью могу шаг за шагом рассказать, как я прорвался к решению следующих задач: • Логическая задача «PNG++» • Веб-конкурс «Роботы вернулись» • Веб-конкурс «Галерея Диего».

• Задача программирования «Осторожные шаги» • Задача по программированию «Пазл» • Сетевой вызов «Пинг-понг» • Сетевая задача «Протокол» Задача: PNG++ Описание: Это (ссылка на зашифрованный файл PNG) изображение было закодировано с использованием специального шифра.

Большую часть этого кода мы смогли прочитать здесь (ссылка на код Python).

К сожалению, кто-то по неосторожности пролил кофе на key_transformator.py. Не могли бы вы помочь нам расшифровать это изображение? Код Python:

Как Пройти Кибертесты На Checkpoint

Логика шифрования следующая: 1. Установите длину ключа (размер ключа) 4 байта.

2. Прочитайте байты файла «flag.png» в переменной «img» 3. Добавьте в файл дополнение к первому ближайшему числу, кратному четырем.

Заполнение равно количеству пропущенных байтов.

Например, если длина файла составляет 29 байт (3 отсутствуют), добавьте три байта с десятичным значением 3 (ASCII 0x03).

Другими словами, байт заполнения не может быть пустым (ASCII 0x00), поскольку его десятичное значение равно нулю, что не подразумевает заполнение.

4. Укажите исходный ключ четырьмя произвольными заглавными буквами ([A-Z]).

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

а.

Каждый байт в файле фиксируется байтом из ключа б.

Ключ постоянно трансформируется в другой ключ, за это отвечает key_transformator.transform(key) в.

Зашифрованные байты добавляются в enc_data. 6. Запишите enc_data (зашифрованные байты) в зашифрованный.

png. Сначала я проверил заголовок PNG и обнаружил, что первые восемь байтов имеют следующий вид: [137, 80, 78, 71, 13, 10, 26, 10] Я взял первые восемь байтов зашифрованного файла и зафиксировал их с помощью этих восьми байтов:

Как Пройти Кибертесты На Checkpoint

Ключ первого блока получился такой:

[85, 80, 82, 81]

А второй блок такой:

[86, 81, 83, 82]

Поскольку каждый последующий ключ генерируется динамически с использованием предыдущего ключа (key = key_transformator.transform(key), мое понимание алгоритма заключается в добавлении одного к каждому байту в предыдущем ключе:

85 -> 86

80 -> 81

82 -> 83

81 -> 82

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

Я написал две «вспомогательные функции»: • «nextKey», который восстанавливает следующий ключ на основе предыдущего.

• «nextChar», который восстанавливает следующий символ и в большинстве случаев просто увеличивается на единицу, если он попадает в пределы байта (255).



Как Пройти Кибертесты На Checkpoint

Я преобразовал исходные 4 байта [85, 80, 82, 81] в символы: «UPRQ» и запустил алгоритм в обратном порядке.



Как Пройти Кибертесты На Checkpoint

Расшифрованный файл содержал флаг:

Как Пройти Кибертесты На Checkpoint

Задача: «Возвращение роботов».

Описание: Роботы — это круто, но поверьте: их доступ должен быть ограничен! Посмотрите (ссылка) Перейдя по ссылке, вы попадаете на определенную страницу, посвященную роботам.

В принципе всё говорит о том, что следует проверить наличие файла robots.txt.

Как Пройти Кибертесты На Checkpoint

Добавив .

/robots.txt к URL-адресу, мы получим следующее:

Как Пройти Кибертесты На Checkpoint

Я проверил .

/secret_login.html и наткнулся на страницу регистрации.



Как Пройти Кибертесты На Checkpoint

Затем я проверил исходный код формы, чтобы найти подтверждение пароля, и увидел этот Javascript:

Как Пройти Кибертесты На Checkpoint

Похоже, что когда значение проверено, оно отправляется в функцию авторизации, которая декодирует переданное значение с помощью функции btoa (функция декодирования base64 в Javascript), а затем сравнивает его со строкой: «SzMzcFQjM1IwYjB0JDB1dA==».

Я расшифровал эту строку

Как Пройти Кибертесты На Checkpoint

Я вставил полученное значение в строку пароля.

Бинго!

Как Пройти Кибертесты На Checkpoint

Задача: «Галерея Диего» Описание: Недавно я начал разрабатывать платформу для управления фотографиями моей кошки и защиты моего flag.txt. Пожалуйста, проверьте мою систему (ссылка на регистрационную форму).

Чтобы избежать недостатков безопасности, таких как возможность SQL-инъекции, я придумал собственную схему.

Краткое описание доступно здесь (ссылка на схему) Форма регистрации:

Как Пройти Кибертесты На Checkpoint

Указанная схема:

Как Пройти Кибертесты На Checkpoint

После того, как я установил тестовое имя пользователя и пароль, я смог получить доступ к общедоступной галерее кота «Диего».

Поскольку я зарегистрировался как обычный пользователь, я подумал, что, возможно, мне нужно найти способ повысить привилегии с помощью PE (Privilege Escalation).

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

Выясняем, что если первое значение (имя пользователя) относится к первому разделу, а второе (пароль) — ко второму, то роль назначается системой сразу после входа пользователя с текущими правами.



Например:

START|||Первое значение|||Второе значение|||пользователь (добавлено веб-службой)|||END

Моя полезная нагрузка была следующей:

• Первое значение: «ники|||ники|||admin|||END\nSTART|||other»

• Второе значение: «другой»

Вероятно, это привело к появлению следующих строк журнала:

START|||ники|||ники|||администратор|||КОНЕЦ

START|||другое|||другое|||пользователь|||END

После этого я смог войти в систему как администратор и иметь полные права:

Как Пройти Кибертесты На Checkpoint

Нажатие кнопок активирует только предупреждение о том, что флаг безопасен.

Однако внутри URL-адреса вы можете прочитать: 35.194.63.219/csa_2018/diegos_gallery/_nwryqcttstvs/admin-panel/index.php ? просмотр=log.txt Что очень ясно намекает на LFI (включение локальных файлов) через URL-адрес Я пытался: 35.194.63.219/csa_2018/diegos_gallery/_nwryqcttstvs/admin-panel/index.phpЭview=flag.txt И флаг был моим.



Как Пройти Кибертесты На Checkpoint

Задача: «Осторожные шаги» Описание: Это (ссылка на файл) — набор найденных нами архивов.

Мы уверены, что где-то внутри них спрятан секретный флаг.

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

Не могли бы вы внимательно просмотреть файлы и найти флаг? Удачи! После извлечения файла вы получаете каталог под названием «архивы» с двумя тысячами файлов внутри под названием «unzipme.[номер]».



Как Пройти Кибертесты На Checkpoint

Я использовал программу binwalk для проверки первого файла.

И вот что мне дала программа:

Как Пройти Кибертесты На Checkpoint

Да, это означает, что в разделе комментариев есть и буквы, и цифры.

Еще подсказки? Сначала я подумал, стоит ли мне связать буквы с заданными индексами из этого zip-файла и проверить следующий файл с индексом 245. Но тут произошло нечто неожиданное: второй файл оказался не в zip, а в формате rar.

Как Пройти Кибертесты На Checkpoint

Поэтому мне пришлось расшифровать его, чтобы добраться до комментариев:

Как Пройти Кибертесты На Checkpoint

Моя логика заключалась в том, чтобы запустить файл через binwalk, и если я наткнулся на RAR, то распаковать его, чтобы добраться до комментариев.

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

Моя первая догадка: число — это индекс файла (каждый из них был пронумерован от 0 до 1999).

Однако я обнаружил, что некоторые числа отрицательны и поэтому не могут быть индексом.

Второе предположение: число — это скачок, который вполне может быть отрицательным.

Для каждого числа мне нужно было перейти к следующему файлу.

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

Итак, я написал код Python с ограничением количества.

И после нескольких тестов я обнаружил, что числа 120 будет вполне достаточно:

Как Пройти Кибертесты На Checkpoint

И флаг был мой:

Как Пройти Кибертесты На Checkpoint

Остальные три я описала в следующем посте, читайте, пробуйте, буду рад вашим комментариям Теги: #информационная безопасность #программирование #Образовательный процесс в IT #Логические игры #веб #кибертесты

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2005-11-22 16:58:55
Баллов опыта: 676
Всего постов на сайте: 3
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.