NSK CTF Канал
256 subscribers
28 photos
2 videos
7 files
24 links
Сайт: https://nskctf.ru/

По всем вопросам: @user_9_9_9_9
Download Telegram
Тренировочный таск #3

Необходимо запустить следующий файл, открыть необходимые 10 портов и флаг будет твой!

Решения направляем Степе.
Please open Telegram to view this post
VIEW IN TELEGRAM
3🐳3❤‍🔥2🔥1🥰1
таск_3.html
26 KB
❤‍🔥2🐳21🔥1👀1
📌 Каждая пятидесятая зарегистрированная команда получит мерч Тринадцатой Летней школы CTF!

А также напоминаем, что призовой фонд соревнований составляет 100 тысяч рублей.

Не упустите возможность попытать удачу! Зарегистрируйте команду до 10 октября 12:00 💙
Please open Telegram to view this post
VIEW IN TELEGRAM
👀4❤‍🔥32🔥1💯1
This media is not supported in your browser
VIEW IN TELEGRAM
🔝Семь лет тишины…

Семь лет, в которых никто не видел ни вспышек, ни порталов, ни следов Лаборатории X. Казалось, что она исчезла навсегда, растворившись во вне-временной пустоте. Но недавно мир снова содрогнулся: в разных точках пространства вспыхнули аномалии, запах гари и озона напомнил о старых экспериментах, а где-то в воздухе раздался знакомый смех.
И снова трое. dr. Demon — чьи замыслы слишком часто завершаются облаками дыма. mr. Fade — мастер вносить сумятицу и превращать любой эксперимент в непредсказуемый аттракцион. mr. S — тот, кто всегда говорит «осторожнее», но первым тянется к кнопке с надписью «Не нажимать».

Но похоже, Лаборатория ждала не только их. В её коридорах уже слышны шаги других — тех, кто пока еще безымянен. Они появляются в уцелевших журналах, прячутся в строчках кода, мелькают в свете разрядов. Кто-то назовёт их исследователями, кто-то — безумцами. Но именно им предстоит вписать новые имена в историю Лаборатории X.

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

🔝Добро пожаловать в Лабораторию X.
NSK CTF возвращается!

Кстати, в ролике есть пасхалка, смотрите внимательнее
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥42🔥21😁1💯1
Надеемся, что все успели решить первые два тренировочных задания. Время раскрывать карты:

✔️ 1 таск: совсем простенький, вставляем шифр в онлайн-сервис по дешифровке шифра цезаря (например: https://www.dcode.fr) и получаем флаг: nskctf{welcome_to_the_game_this_was_easy_wasnt_it}.

✔️ 2 таск: посложнее, решение на питоне смотрите в приложенных файлах, флаг: nskctf{th1s_0n3_is_mor3_confus1ng_than_simple_caesar_c1ph3r}.

Кстати, уже завтра будет следующий таск, не пропустите!

Также напоминаем, что формат флага, как на тренировке, так и на соревновании — nskctf{...}
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42❤‍🔥21
⚡️ Успейте зарегистрироваться по ссылке https://sibguti-2025.timepad.ru/event/3574456/!
❤‍🔥311👍1🔥1😎1
Тренировочный таск #4

Не все случайности случайны. А сможете ли вы одолеть случайность?
import random
import sys

FLAG = "nskctf{fake_flag}"

random.seed()
print("Some very important data:", end=' [')
for _ in range(623):
x = random.getrandbits(32)
print(x, end=', ')
print(random.getrandbits(32), end=']')
print("\nEnd of very important data")

encrypted_flag = []
for char in FLAG:
r = random.getrandbits(32)
encrypted_flag.append(ord(char) ^ (r & 0xFF))

print("Encrypted flag:")
print(encrypted_flag)


В файлике ниже представлен вывод данной программы😑
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥622🥰2🔥1
output.txt
7.4 KB
3❤‍🔥2🔥1💯1
⚡️ Успейте зарегистрироваться по ссылке https://sibguti-2025.timepad.ru/event/3574456/!
❤‍🔥42🔥2👍1
Тренировочный таск #5

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

До соревнований осталось меньше недели, успейте решить последний таск и отправить флаг Стёпе!

Файл с заданием прикреплен ниже 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
🐳6❤‍🔥22🔥1🥰1
TimeMachine.zip
69.5 KB
🐳4🔥31❤‍🔥1
Команда KEVA снова в строю и снова разрабатывает таски для NSK CTF!

Команда KEVA образовалась в 2008 году и состоит из студентов Томского государственного университета систем управления и радиоэлектроники.

Осталось 4 дня до старта, команда уже на готове, успейте зарегистрироваться до 10 октября 12:00 (по Новосибирскому времени) 💙
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥9🔥5👍21😎1
📄 Делимся исходным кодом wasm-модуля из 3 тренировочного таска:
static const char ERR[] = "try harder! you opened incorrect ports!";

static const unsigned char OK_A[29] = { 0xf9, 0xf9, 0x69, 0x5b, 0xd, 0xe2, 0x1, 0x7a, 0x5e, 0x7d, 0x5f, 0xe5, 0x15, 0x9d, 0x72, 0x35, 0x14, 0x5b, 0xd1, 0x2a, 0x91, 0xde, 0x11, 0xfd, 0x19, 0xfc, 0xad, 0x71, 0xc8 };
static const unsigned char OK_B[29] = { 0x97, 0x8a, 0x2, 0x38, 0x79, 0x84, 0x7a, 0x4b, 0x2d, 0x22, 0x28, 0x84, 0x66, 0xf0, 0x2d, 0x6, 0x75, 0x28, 0xa8, 0x75, 0xe5, 0xb1, 0x4e, 0x8f, 0x2a, 0x9d, 0xc9, 0x4e, 0xb5 };
static char OK_BUF[30];
static int OK_READY = 0;

static const char* ok_msg(){
if (!OK_READY){
for (int i = 0; i < 29; i++) OK_BUF[i] = (char)(OK_A[i] ^ OK_B[i]);
OK_BUF[29] = '\0';
OK_READY = 1;
}
return OK_BUF;
}

static int contains(const int *arr, int n, int v){
for (int i = 0; i < n; i++) if (arr[i] == v) return 1;
return 0;
}

__attribute__((export_name("callRouter")))
const char* callRouter(int a0,int a1,int a2,int a3,int a4,int a5,int a6,int a7,int a8,int a9){
const int expected[10] = {53872, 7, 43123, 1126, 52152, 24680, 38651, 41867, 2672, 12935};
int in[10] = {a0,a1,a2,a3,a4,a5,a6,a7,a8,a9};
for (int i = 0; i < 10; i++){
if (!contains(in, 10, expected[i])) return ERR;
}
return ok_msg();
}


открыли порты:
{53872, 7, 43123, 1126, 52152, 24680, 38651, 41867, 2672, 12935}

получили флаг: nskctf{1s_wasm_3asy_to_r3ad?}
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤‍🔥21💯1
💡 Делимся решением 4 тренировочного таска

В Python для random используется псевдослучайный генератор MT19937, его состояние можно предсказать, имея 624 32-битных выхода, и соответственно узнать генерируемые далее числа.

Правильный флаг:
nskctf{rand0m_Not_s0_Rand0M}

Уже завтра раскроем решение финального тренировочного таска, успейте решить 🐾
Please open Telegram to view this post
VIEW IN TELEGRAM
7❤‍🔥11🔥1
🔖Делимся исходниками финального тренировочного таска
using System;
using System.Text;
using System.Windows.Forms;
using System.Security.Cryptography;

namespace WinFormsApp1
{
public class CountdownForm : Form
{
private readonly Label _label;
private readonly System.Windows.Forms.Timer _timer;
private int _seconds = 2592000;

private static readonly byte[] Key = Convert.FromBase64String("T9muLMd0UpRYgb99ZqihElEuegrsWFtvA6c88wznaRw=");
private static readonly byte[] IV = Convert.FromBase64String("wljtQ0QGd4NNOU+5VvMjlw==");
private static readonly byte[] Cipher = Convert.FromBase64String("3YfjykEeazHsGKp5hykYgzYWa+HXaT5c6PtYPfNB9B8=");

public CountdownForm()
{
Text = "Time Machine";
StartPosition = FormStartPosition.CenterScreen;
ClientSize = new System.Drawing.Size(800, 150);

_label = new Label
{
Dock = DockStyle.Fill,
TextAlign = System.Drawing.ContentAlignment.MiddleCenter,
Font = new System.Drawing.Font("Segoe UI", 14f, System.Drawing.FontStyle.Bold),
Text = "Wait " + _seconds.ToString() + " seconds for flag to be revealed"
};
Controls.Add(_label);

_timer = new System.Windows.Forms.Timer { Interval = 1000 };
_timer.Tick += OnTick;
}

protected override void OnShown(EventArgs e)
{
base.OnShown(e);
_timer.Start();
}

private void OnTick(object? sender, EventArgs e)
{
_seconds--;
if (_seconds > 0)
{
_label.Text = "Wait " + _seconds.ToString() + " seconds for flag to be revealed";
}
else
{
_timer.Stop();
_label.Text = DecryptFlag();
}
}

private static string DecryptFlag()
{
using var aes = Aes.Create();
aes.Key = Key;
aes.IV = IV;
aes.Padding = PaddingMode.PKCS7;

using var decryptor = aes.CreateDecryptor();
var plaintextBytes = decryptor.TransformFinalBlock(Cipher, 0, Cipher.Length);
return Encoding.UTF8.GetString(plaintextBytes);
}
}
}


Для решения достаточно воспользоваться dnSpy: либо поменять оставшееся количество секунд дебаггером в runtime, либо расшифровать AES, из декомпилированного кода получив Key, IV, и Cipher.
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥3❤‍🔥1👍1🥰1
📌Важно!

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

Ссылка на канал: https://t.iss.one/nskctf
Ссылка на чат: https://t.iss.one/+lJNrLRVUTwc0YWQy

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

Всем успехов на соревновании 💙
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤‍🔥1🔥1👌1