ECSC 2025: Warmup


ECSC (ecsc.eu) to europejski konkurs z dziedziny cyberbezpieczeństwa kierowany do młodych (14-25 lat) ludzi. Mimo, że każdy kraj stara się (oczywiście) wyłonić jak najsilniejszą reprezentację, tak naprawdę głównym celem ECSC jest promowanie wiedzy o cyberbezpieczeństwie.

Ta podstrona jest dedykowana dla tych, którzy zaczynają swoją przygodę z konkursami z tej dziedziny (zazwyczaj nazywanymi CTFami). Dla tych z was, którzy pozjadali już zęby na CTFach, zadania tutaj będą proste (lub wręcz trywialne), ale jeśli dla kogoś jest to pierwszy start - warto zacząć od nich przed przejściem do tych trudniejszych.

Jak nazwa wskazuje, celem przy rozwiązywaniu zadania w konkursie CTF jest zdobycie "flagi". Flaga to po prostu krótki fragment tekstu, w określonym formacie. W przypadku tego CTFa, format to ecsc25{.....}, czyli tekst zaczynający się od ecsc25{ a kończący na }.

Są tutaj cztery zakładki, odpowiadające najbardziej standardowym kategoriom zadań na zawodach CTF - tzw. web, re, pwn i crypto. Znajdują się tam informacje na czym polega dana kategoria, a także jak zacząć. A jeśli nawet nie uda się wszystkiego rozwiązać w trakcie trwania konkursu, nie warto się zniechęcać - podlinkowane są też materiały które można wykorzystać do dalszej nauki... i ponownego startu za rok.

Reverse-engineer podczas pracy

O kategorii

RE to akronim od "Reverse Engineering" - Inżynieria Wsteczna. Jest to specjalność polegająca na analizie programów wykonywalnych (kolokwialnie "plików .exe", od ich rozszerzenia w systemie Windows).

Mając tylko plik .exe i odpowiednie narzędzia można dowiedzieć o nim wszystkiego - jak działa, na co pozwala, jak wygląda jego komunikacja sieciowa, do czego służy, itp. Można też robić masę innych rzeczy, na przykład zmienić jego działanie. Popularymi - chociaż dość mało etycznymi - zastosowaniami RE jest omijanie zabezpieczeń przed kopiowaniem w grach (tzw. crackowanie), albo pisanie do nich cheatów.

Podstawowym narzędziem inżynierii wstecznej jest dekompilator - popularne opcje do wyboru to IDA Pro oraz Ghidra.

Treść zadania

Program którego dotyczy zadanie prosi o podanie hasła, i wyświetla informacje czy hasło jest poprawne czy nie. Celem jest odnalezienie poprawnego hasła. Hasłem jest flaga, którą można wrzucić do platformy hack.cert.pl i zdobyć punkty.

Jeśli nie wiesz jak zacząć - jedna z możliwości to pobranie programu Ghidra, zainstalowanie go, a następnie załadowanie tam pobranego programu i przekilkanie się po dostępnych opcjach

W archiwum do pobrania znajdują się dwie wersje tego samego programu - jedna działająca na systemie Linux, a druga na systemie Windows. Pobierz program do analizy.

Materiały do samodzielnej nauki

Inżynierii wstecznej nie da się nauczyć bez praktyki - z tego powodu warto zacząć od krótkiego wstępu do narzędzi, a następnie zacząć samemu próbować mierzyć się z zadaniami i próbkami do analizy.

Dodatkowo, w przypadku każdej dziedziny bezpieczeństwa komputerowego, dobry sposób na naukę to:

  • Regularne branie udziału w konkursach typu CTF, najlepiej z własną drużyną. Najpopularniejsza strona z informacjami o nadchodzących konkursach i globalnym rankingiem to https://ctftime.org/.
  • Tzw. “write-upy”, czyli dostępne w Internecie w różnych miejscach (np. na blogach) opisy, w jaki sposób skutecznie dokonano konkretnych ataków (np. na zawodach CTF). Można ich szukać, wpisując w wyszukiwarce odpowiednią frazę, np. “XSS with no space write-up”.
  • Serwis hack.cert.pl zespołu CERT Polska: zadania;
  • Kanał YT Gynvaela Coldwinda: streamy o programowaniu niskopoziomowym i bezpieczeństwie;
  • Kanał YT LiveOverflow: filmiki o bezpieczeństwie;
Rozwiązywanie zadania z kryptografii.

O kategorii

Crypto (od cryptography, nie od cryptocurrency) to kategoria zadań kryptograficznych, zazwyczaj polegających na łamaniu różnych szyfrów i kodów. Typowe zadanie z kryptografii to kod programu szyfrującego, zaszyfrowane dane, a celem jest odzyskanie oryginalnych danych.

Dla osób z pasją do matematyki, może to być najbardziej naturalna i najprostsza kategoria, z uwagi na to że wiele zadań często wymaga raczej obliczeń matematycznych niż typowego hackowania. Dla osób bez pasji... na pocieszenie, "prawdziwe" CTF są zawsze grupowe, więc nie każdy musi robić wszystko.

Treść zadania

Zadanie konkursowe jest proste: aby dostać flagę, pobierz kod źródłowy programu szyfrującego i wynik jego wykonania, i wykorzystaj to aby odzyskać zaszyfrowany plik. Z kodu źródłowego widać, żę w zadaniu użyty jest szyfr AES w trybie CTR. Jeśli nie wiesz co oznaczają te akronimy, warto zacząć np. od artykułów o AES, szyfrach blokowych oraz trybach szyfrów blokowych (niekoniecznie na Wikipedii).

Pobierz kod szyfrujący.

Materiały do samodzielnej nauki

Z naszego doświadczenia, kryptografię najprościej studiuje się w "klastyczny" sposób, z książek i wykładów. Z tego powodu na liście materiałów do polecenia znalazły się głównie materiały tego typu. Dodatkowo są strony koncentrujące się na zadaniach tego typu.

  • Yehuda Lindell, Jonathan Katz, “Introduction to Modern Cryptography”;
  • Jean-Philippe Aumasson, “Serious Cryptography: A Practical Introduction to Modern Encryption”;
  • Serwis Coursera.org: kurs internetowy Cryptography I (darmowy w wersji bez certyfikatu);
  • Serwis Cryptopals: zbiór zadań na implementację różnych konstrukcji kryptograficznych oraz klasycznych ataków;
  • Laurens Van Houtven “Crypto101”;
  • Miesięcznik “Delta”: rubryka “A jednak się da”.
  • Trochę mniej poważną ale dalej rzetelną i pewnie ciekawszą książką o której warto wspomnieć jest "The Manga Guide to Cryptography"

Dodatkowo, w przypadku każdej dziedziny bezpieczeństwa komputerowego, dobry sposób na naukę to:

  • Regularne branie udziału w konkursach typu CTF, najlepiej z własną drużyną. Najpopularniejsza strona z informacjami o nadchodzących konkursach i globalnym rankingiem to https://ctftime.org/.
  • Tzw. “write-upy”, czyli dostępne w Internecie w różnych miejscach (np. na blogach) opisy, w jaki sposób skutecznie dokonano konkretnych ataków (np. na zawodach CTF). Można ich szukać, wpisując w wyszukiwarce odpowiednią frazę, np. “XSS with no space write-up”.
  • Serwis hack.cert.pl zespołu CERT Polska: zadania;
  • Kanał YT Gynvaela Coldwinda: streamy o programowaniu niskopoziomowym i bezpieczeństwie;
  • Kanał YT LiveOverflow: filmiki o bezpieczeństwie;
Przykład zastosowania słowa "pwned".

O kategorii

Etymologia "Pwn" jest skomplikowana - "pwn" to skrót od "pwning", które z kolei jest leetspeakiem od "owning". W kontekście bezpieczeństwa, oznacza znajdywanie podatności i przejmowanie kontroli nad usługami, zazwyczaj działającymi na zdalnym serwerze. Odbywa się to za pomocą tak zwanych eksploitów, więc trochę bardziej polska nazwa na "pwning" to "eksploitacja" albo "eksploitacja binarna" (kiedy usługa jest napisana w języku natywnym).

W tym typie zadania celem jest przeanalizowanie kodu (jak w inżynierii wstecznej), znalezienie w nim błędu bezpieczeństwa (np. przepełnienia bufora) a następnie wykorzystanie go do przejęcia kontroli nad serwerem. Z uwagi na to, że do rozwiązania trzeba połączyć kilka różnych umiejętności, nauka tej kategorii jest zazwyczaj dość trudna.

Treść zadania

Żeby zdobyc flagę, przeanalizuj załączony program, a następnie połącz się do serwera zadania pod adresem warmup.ecsc25.hack.cert.pl:5210 (przykładowo za pomocą programu netcat) i przejmij nad nim kontrolę. To prawdopodobnie najtrudniejsze z rozgrzewkowych zadań - podpowiedzią może być hasło buffer overflow. Flaga znajduje się na serwerze, w pliku flag.txt.

Pobierz program do analizy.

Materiały do samodzielnej nauki

Podobnie jak w przypadku inżynierii wstecznej, ciężko nauczyć się eksploitacji w sposób teoretyczny i najlepszy sposób na naukę to rozwiązywanie zadań. Kilka serwisów wartych polecenia to:

Dodatkowo, w przypadku każdej dziedziny bezpieczeństwa komputerowego, dobry sposób na naukę to:

  • Regularne branie udziału w konkursach typu CTF, najlepiej z własną drużyną. Najpopularniejsza strona z informacjami o nadchodzących konkursach i globalnym rankingiem to https://ctftime.org/.
  • Tzw. “write-upy”, czyli dostępne w Internecie w różnych miejscach (np. na blogach) opisy, w jaki sposób skutecznie dokonano konkretnych ataków (np. na zawodach CTF). Można ich szukać, wpisując w wyszukiwarce odpowiednią frazę, np. “XSS with no space write-up”.
  • Serwis hack.cert.pl zespołu CERT Polska: zadania;
  • Kanał YT Gynvaela Coldwinda: streamy o programowaniu niskopoziomowym i bezpieczeństwie;
  • Kanał YT LiveOverflow: filmiki o bezpieczeństwie;
Tak nie wygląda hackowanie stron internetowych.

O kategorii

Zadania "Web" koncentrują się na bezpieczeństwie aplikacji webowych - czyli grupie podatności która prawdopodobnie najczęściej jest wykorzystywana do ataków na firmy i usługi. Celem zazwyczaj jest znalezienie i użycie podatności w przygotowanej do tego stronie.

Treść zadania

Strona na której jesteś jest napisana w języku Python i znajduje się w niej prosta podatność. Formularz poniżej poniżej pozwala na wpisanie hasła. Flagę otrzymuje się za wpisanie hasła administratora. Niestety, wiemy że administrator postępuje zgodnie z zaleceniami spod adresu https://cert.pl/hasla/ i hasło jest bardzo silne. Wiadomo jedynie, że kod sprawdzający wygląda mniej-więcej tak:


conn = sqlite3.connect(DB_PATH)
c = conn.cursor()
c.execute(f"SELECT password FROM users WHERE username = 'admin' and password = '{user_input}'")
result = c.fetchone()
conn.close()
if result:
    # wejdź na stronę tylko dla administratora.
else:
    # wyświetl informacje o porażce...

Czy masz już jakiś pomysł? Jeśli nie, poszukaj informacji na temat najczęstszych podatności w aplikacjach webowych i jak je wykorzystać (dobre hasło to np. OWASP top 10). Jeśli tak, prawdopodobnie zadanie zrobisz bardzo szybko.

Materiały do samodzielnej nauki

W internecie można znaleźć bardzo dużo informacji na temat bezpieczeństwa aplikacji webowych. Kilka wybranych źródeł, o których wiemy że są warte polecenia:

  • Serwis Sekurak: artykuły na temat różnych rodzajów podatności (XSS, SQL Injection, XXE itp.);
  • Serwis PortSwigger: artykuły z sekcji Web Security Academy;
  • Serwis Root Me: zadania z kategorii Web;
  • Michał Bentkowski, Gynvael Coldwind i inni: “Bezpieczeństwo Aplikacji Webowych”.

Dodatkowo, w przypadku każdej dziedziny bezpieczeństwa komputerowego, dobry sposób na naukę to:

  • Regularne branie udziału w konkursach typu CTF, najlepiej z własną drużyną. Najpopularniejsza strona z informacjami o nadchodzących konkursach i globalnym rankingiem to https://ctftime.org/.
  • Tzw. “write-upy”, czyli dostępne w Internecie w różnych miejscach (np. na blogach) opisy, w jaki sposób skutecznie dokonano konkretnych ataków (np. na zawodach CTF). Można ich szukać, wpisując w wyszukiwarce odpowiednią frazę, np. “XSS with no space write-up”.
  • Serwis hack.cert.pl zespołu CERT Polska: zadania;
  • Kanał YT Gynvaela Coldwinda: streamy o programowaniu niskopoziomowym i bezpieczeństwie;
  • Kanał YT LiveOverflow: filmiki o bezpieczeństwie;

Na koniec wyjaśnimy czym jest CERT Polska i dlaczego to my organizujemy krajowe kwalifikacje do ECSC.

W wielkim skrócie: jesteśmy instytucją publiczną dbającą o bezpieczeństwo polskiego internetu. Formalnie jesteśmy zespołem w strukturach NASK - Państwowego Instytutu Badawczego, a nasze zadania związane z cyberbezpieczeństwem wynikają z naszego statusu jako tzw. zespołu CSIRT poziomu krajowego w ramach krajowego systemu cyberbezpieczeństwa.

W ramach tych zadań m.in.:

  • koordynujemy obsługę incydentów cyberbezpieczeństwa zgłaszanych nam przez instytucje publiczne i firmy pełniące kluczowe usługi dla bezpieczeństwa państwa i obywateli,
  • monitorujemy zagrożenia, które pojawiają się w polskim internecie (zarówno te dotyczące oszustw, ataków innych państw czy źle skonfigurowane i podatne usługi),
  • tworzymy narzędzia dla administratorów i specjalistów od cyberbezpieczeństwa (jeżeli administrujecie stroną internetową koniecznie zarejestrujcie się na moje.cert.pl, a także spójrzcie na nasze inne projekty na GitHubie),
  • informujemy o zagrożeniach i uświadamiamy w kwestiach cyberbezpieczeństwa, także tworząc komunikaty powiadomień o zagrożeniach w mObywatelu (włączcie tam funkcję "Bezpiecznie w sieci"),
  • współpracujemy z dwoma pozostałymi zespołami CSIRT poziomu krajowego w ABW i w wojsku, a także innymi instytucjami zajmującymi się cyberbezpieczeństwem w kraju i zagranicą.

Więcej dowiecie się m.in. na Wikipedii: https://pl.wikipedia.org/wiki/CERT_Polska :).

Śledźcie też nasze profile w mediach społecznościowych: