---
# System prepended metadata

title: 'ООУИ 23/24, финал, 1 тур'

---

# ООУИ 23/24. Финал, первый тур

[TOC]


## Творческое

### Квантовое шифрование
#### Балл: 2
#### Условие:
В последние годы область квантового шифрования претерпела значительные изменения, став одним из наиболее обсуждаемых направлений в информационной безопасности. Квантовое шифрование использует принципы квантовой механики для обеспечения безопасности передачи информации, что теоретически делает её невосприимчивой к взлому с помощью классических и даже квантовых вычислений.

**Задание:**

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

1. Перспективы развития квантового шифрования:

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

2. Польза квантового шифрования:

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

3. Угрозы и вызовы, связанные с квантовым шифрованием:

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

**Требования к ответу:**

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

**Примеры для вдохновения:**

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

**Формат сдачи:**

Ответ предоставляется в форме эссе. Ожидается чёткое структурирование текста, наличие введения, основной части и заключения. Ответ сохранять на рабочем столе с названием "твроческая задача Квантовое шифрование"


### Incident manager
#### Балл: 2
#### Условие:

**Задание:**

Указано в приложенном файле

**Требования к ответу:**

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

**Формат сдачи:**

Ответ предоставляется в форме эссе. Ожидается чёткое структурирование текста, наличие введения, основной части и заключения. Ответ сохранять на рабочем столе с названием "твроческая задача Incident Manager"


## Paper
### AND or OR?
#### Балл: 1.5
#### Условие:

Составьте таблицу истинности для следующего логического выражения:


![image](https://hackmd.io/_uploads/Hk0Z45jeC.png)


Здесь используются следующие логические операции:

![image](https://hackmd.io/_uploads/HJFzEqsxA.png)

Вам необходимо построить таблицу истинности для данного выражения, учитывая все возможные комбинации значений переменных X, Y и Z которые могут быть либо 0 (ложь), либо 1 (истина).

Данное задание необходимо делать на бумаге, описывая ход решения

#### Решение:

Таблица истинности данного выражения
![image](https://hackmd.io/_uploads/Hkz6Eqjx0.png)


### Виженер
#### Балл: 1.5
#### Условие:

Вам необходимо с помощью представленной ниже таблицы и шифра Виженера выполнить
две задачи:
1. Зашифровать фразу «ctf its easy» с ключевой фразой «some key»
2. Расшифровать фразу «kmx c lnoiqg onixsgk hkimgk» используя ключевую фразу «ctf»


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

![image](https://hackmd.io/_uploads/HJtFt5jgR.png)


#### Ответ: 
#### Решение:


## Web

### GetTheFile
#### Балл: 1
#### Условие:

Just read file and get your points!

http://10.90.138.119:5555

#### Ответ: ctf{51mpl3_w4y_u51n6_4n07h3r_5ch3m3}
#### Решение:


## PWN
### ha-ha, classic
#### Балл: 1
#### Условие:

It's just classic pwn task!

nc 10.90.138.119 5050

#### Ответ: ctf{0V3rF10W_MY_8UFF3r}
#### Решение:

Для начала декомпилируем бинарный файл

![Снимок экрана 2024-04-10 в 083630](https://hackmd.io/_uploads/r1nxu5oeR.png)

Тут сразу бросается в глаза функция strcmp - намек на переполнение буфера памяти.


А еще есть пара констант заданного размера, их можно декодировать по примеру ниже:

![Снимок экрана 2024-04-10 в 083807](https://hackmd.io/_uploads/ryCX_9igC.png)

и получить INNO и HELLO, при чем эти строки сравниваются, но есть еще ввод.

В целом, если привести в исходный вид, то получим следующий код:

![Снимок экрана 2024-04-10 в 084705](https://hackmd.io/_uploads/SJYS_qslR.png)


Здесь видим классический пример категории, а именно переполнение буфера на key[10], решение для такой задачи будет выглядеть так:

![image (4)](https://hackmd.io/_uploads/rkdPd5igR.png)


Осталось подключиться по netcat и повторить это на сервере.


## Forensic
### hacker
#### Балл: 1
#### Условие:
My computer was hacked! I just get some strange file from hacker and message "try to find me, friend". Can you help me?
#### Ответ: ctf{H4CK_7H3_P14N37}
#### Решение:

Определяем, что перед нами образ диска:

![image](https://hackmd.io/_uploads/B1DLv9jx0.png)

Монтируем его:

![image (1)](https://hackmd.io/_uploads/H1gvP5se0.png)

Видим кучу файлов-картинок, с разными изображениями. Копаемся в них, ищем что-то интересное, доходим до EXIF данных.

![image (2)](https://hackmd.io/_uploads/BkYvPcixC.png)

Видим base64 в строке user comment, декодируем

![image (3)](https://hackmd.io/_uploads/Byuuw5jlR.png)


## Reverse
### Slowly
#### Балл: 1
#### Условие:

This code is so slowly... But i very need flag!

#### Ответ: CTF{510W_45_5N411}
#### Решение:

Необходимо сделать декомпиляцию бинарного файла, получается такой результат:

![Снимок экрана 2024-04-10 в 085108](https://hackmd.io/_uploads/SyQid5jxC.png)


![Снимок экрана 2024-04-10 в 085101](https://hackmd.io/_uploads/SJvi_coxR.png)


Видим кучу функций и вызовов, а еще странный **sleep**

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

Исходный код задачи:
![carbon](https://hackmd.io/_uploads/ryKJKqilA.png)


## Network

### Двойное рукопожатие
#### Балл: 1
#### Условие:
Наш сервер слушает порт 31337. Если вы подключаетесь только одним способом, то в ответ - тишина. Если же подключаться по правильной схеме, а-ля port-knocking, то сервер вам обязательно ответит. Я еще не разобрался в комбинации, но у других коллег это получалось. Сейчас суббота, они недоступны.... помогите!!!
#### Ответ: CTF{hWjFwQ8BvknXY73mDocv}
#### Решение:

Необходимо было взаимодействовать с сервером по следующему алгоритму:
1. Устанавливаем tcp-соединение: `nc 127.0.0.1 31337`
2. Отправляем сообщение по udp-протоколу на тот же номер порта: `echo "Hello, Server!" | nc -u 127.0.0.1 31337`. Соединение из пункта 1 не закрываем
3. Теперь по соединению из пункта 1 нужно отправить какие-нибудь данные (любой текст), тогда сервер ответит вам правильным флагом



## Misc
### file
#### Балл: 1
#### Условие:
Файл без опознавательных знаков был замечен на компьютере главного бухгалтера. Узнайте, что было спрятано, и являются ли эти данные критичными?
#### Ответ: CTF{yPp8iPenT3Sfbhv6AlqL}
#### Решение:

Файл был преобразован по следующему алгоритму:

```bash!
#!/bin/bash

# Create a file named today.txt with specific content
echo "CTF{yPp8iPenT3Sfbhv6AlqL}" > today.txt

# Create a ZIP archive named today.zip with password protection
zip -P '2024-03-16' today.zip today.txt

# Generate a random name for the Zstandard archive
# This uses the UUID tool to generate a unique name
random_name=$(uuidgen)

# Compress the ZIP file into a Zstandard (.zst) archive with the random name
tar -zcvf "${random_name}".tar.gz today.zip

mv "${random_name}".tar.gz "${random_name}"

rm today.txt today.zip

# Display the name of the generated Zstandard archive
echo "Generated tar archive: ${random_name}"

```

Требовалось восстановить цепочку и получить файл:
1. узнать тип файла (tar.gz) и разархивировать его
2. поработать с файлом today.zip, подобрав пароль (актуальная дата - 2024-03-16), разархивировать
3. прочитать файл today.txt

## PPC
### печь
#### Балл: 1
#### Условие:
на вход вам дана последовательность слов, в ответ необходимо отправить количество глаголов (в инфинитиве). Раундов будет много.
В случае, если слово является существительным и глаголом, используется вариант глагол (например, печь).

#### Ответ: CTF{s1dMp0LILYYLtn19aPVH}
#### Решение:

Исходный код сервера
```python
import random
import select
import sys
verbs = []
nouns = []
with open('verbs.txt', 'r') as f:
    verbs =  [x.rstrip() for x in f.readlines()]

with open('nouns.txt', 'r') as f:
    nouns = [x.rstrip() for x in f.readlines()]


def find(input, data = []):
     return len(set(input).intersection(set(data)))

for i in range(100):
    result = []
    verbs_count = 0
    nouns_count = 0
    for j in range(100):
        if random.random() > 0.3:
            result.append(random.choice(verbs))
        else:
            result.append(random.choice(nouns))
    print(" ".join(list(set(result))))
    i, o, e = select.select( [sys.stdin], [], [], 3 )
    if len(i) == 0:
            print('Time is up!')
            exit()
    count = sys.stdin.readline().strip().rstrip()
    if int(count) == find(result, verbs):
         print('Good! Next round...')
    else:
         print('Wrong answer! Count is ', find(result, verbs))
         exit()

print('CTF{s1dMp0LILYYLtn19aPVH}')
```

Алгоритм решения такой:
1. Собрать все слова в словарь
2. Отфильтровать те, которые не являются глаголами (их значительно меньше, около 20 штук)
3. Написать алгоритм, который на основе текущего набора слов просчитывает количество глаголов и отправляет ответ на сервер
4.  Пример такого скрипта находится в коде сервера, функция **find**