0Pricing
Cyber Security Academy · Lekcja

Wyzwania webowe i kryptograficzne

Rozwiązywanie typowych zagadek webowych i kryptograficznych

Wyzwania webowe i kryptograficzne to bezpłatna lekcja Cyber Security Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cyber Security Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Dwa filary: Web i Crypto

Web i crypto to dwa najczęstsze punkty wejścia do CTF-ów.

  • Zadania webowe udostępniają działającą aplikację internetową i wymagają znalezienia błędu w sposobie obsługi danych wejściowych, uwierzytelniania lub zaufania.
  • Zadania kryptograficzne udostępniają szyfrogram, schemat, a czasem także kod źródłowy, i wymagają odzyskania tekstu jawnego lub klucza przez wykorzystanie błędu w sposobie użycia kryptografii.

Oba rodzaje zadań wymagają metodycznej obserwacji. W tej lekcji omówiono typowe zadania z obu kategorii.

Pierwszy krok wobec celu webowego

Zanim spróbują Państwo wykorzystać jakąkolwiek podatność, należy zmapować aplikację. Wyświetl źródło, przeanalizuj odpowiedzi i sprawdź ukrytą zawartość.

# Inspect raw response headers and body
curl -i http://target/

# Look for hidden paths the UI does not link to
gobuster dir -u http://target/ -w wordlist.txt

# Common files worth checking by hand
# /robots.txt  /.git/  /backup.zip  /admin

SQL Injection

SQL injection występuje, gdy dane wejściowe użytkownika są łączone z zapytaniem do bazy danych bez rozdzielenia kodu od danych.

Formularz logowania, który buduje zapytanie takie jak SELECT * FROM users WHERE name='INPUT', można przejąć za pomocą danych wejściowych zamykających ciąg znaków i zmieniających logikę zapytania:

# A classic auth-bypass payload supplied as the username
' OR '1'='1' -- 

# UNION-based extraction once the column count is known
' UNION SELECT username, password FROM users -- 

Właściwe rozwiązanie problemu wstrzykiwania

CTF uczy przełamywać zabezpieczenia przed wstrzykiwaniem, aby można było się przed nim bronić. Właściwą ochroną są zapytania parametryzowane (prepared statements), które całkowicie wyłączają dane użytkownika ze struktury zapytania.

# Vulnerable: input becomes part of the SQL text
query = "SELECT * FROM users WHERE name='" + name + "'"

# Safe: input is bound as a parameter, never parsed as SQL
cursor.execute("SELECT * FROM users WHERE name = ?", (name,))

Cross-Site Scripting (XSS)

XSS występuje, gdy aplikacja odzwierciedla lub zapisuje dane kontrolowane przez atakującego, a przeglądarka wykonuje je jako skrypt. W CTF zadanie dotyczące XSS często obejmuje bota, który odwiedza stronę z Państwa payloadem, mając flagę w ciasteczku.

  • Reflected — payload z żądania jest bezpośrednio odsyłany.
  • Stored — payload zostaje zapisany i jest uruchamiany dla kolejnych odwiedzających.
  • DOM-based — JavaScript po stronie klienta niebezpiecznie zapisuje dane wejściowe na stronie.

Obrona polega na kodowaniu danych wyjściowych zależnym od kontekstu oraz zastosowaniu Content-Security-Policy. Próba testowa, taka jak <script>alert(1)</script>, potwierdza, czy dane wejściowe są poprawnie zamieniane na bezpieczną postać.

SSRF i Path Traversal

Dwa kolejne filary zadań webowych:

  • Fałszowanie żądań po stronie serwera (SSRF) — nakłania się serwer do wykonywania żądań w Państwa imieniu, często pod adresy dostępne tylko wewnętrznie, takie jak http://127.0.0.1, lub do endpointu metadanych chmurowych, aby dotrzeć do flagi.
  • Path traversal — wychodzi się poza przeznaczony katalog za pomocą sekwencji takich jak ../, aby odczytać pliki spoza katalogu głównego serwera WWW, na przykład ../../../../etc/passwd.

Oba problemy wynikają z zaufania danym wejściowym użytkownika przy wyborze zasobu. Zabezpieczenia to ścisłe listy dozwolonych wartości oraz kanonizowanie, a następnie walidowanie ścieżek przed ich użyciem.

Kodowanie to nie szyfrowanie

Najczęstsza pułapka kryptograficzna dla początkujących polega na myleniu kodowania z szyfrowaniem. Kodowanie może odwrócić każdy, kto nie posiadając żadnego klucza, więc nie zapewnia poufności.

Warto nauczyć się rozpoznawać formaty na pierwszy rzut oka:

  • Base64 — litery, cyfry, + /, często z dopełnieniem =.
  • Hex — wyłącznie 0-9 a-f.
  • ROT13 / Caesar — czytelna struktura i przesunięte litery.
# Decode base64
echo 'ZmxhZ3toZWxsb30=' | base64 -d

# Decode hex
echo '666c6167' | xxd -r -p

Klasyczne szyfry i XOR

Wiele zadań kryptograficznych wykorzystuje słabe szyfry historyczne lub niedbale zastosowane współczesne rozwiązania:

  • Caesar / Vigenere — szyfry przesuwające, które można złamać analizą częstości występowania lub wypróbowaniem wszystkich 25 przesunięć.
  • Single-byte XOR — cała wiadomość jest poddawana operacji XOR z jednym bajtem; należy sprawdzić wszystkie 256 kluczy i wybrać czytelny wynik.
  • Repeating-key XOR — można złamać, odnajdując długość klucza, a następnie rozwiązując każdy bajt klucza tak jak szyfr Single-byte XOR.

Wniosek z tej lekcji: własny lub klasyczny szyfr nie zapewnia analitykowi rzeczywistego bezpieczeństwa.

Pułapki RSA

RSA jest bezpieczny tylko wtedy, gdy jego parametry zostały prawidłowo dobrane. Zadania kryptograficzne CTF-ów często udostępniają wadliwą instancję:

  • Mały moduł — jeśli n jest wystarczająco małe, można bezpośrednio rozłożyć je na czynniki i odzyskać klucz prywatny.
  • Mały wykładnik bez dopełnienia — przy e=3 i krótkiej wiadomości szyfrogram może być dokładnym sześcianem, który można odzyskać za pomocą całkowitego pierwiastka sześciennego.
  • Współdzielone czynniki — jeśli dwa klucze publiczne mają wspólną liczbę pierwszą, największy wspólny dzielnik ich modułów natychmiast ją ujawni.

W rzeczywistych systemach należy korzystać ze sprawdzonej biblioteki, dużych kluczy i właściwego dopełnienia (OAEP); nigdy nie należy tworzyć własnej implementacji.

Łamanie hashy

Gdy zadanie udostępnia hash hasła, celem jest odzyskanie pierwotnych danych wejściowych. Nie można odwrócić hasha, ale można zgadywać dane wejściowe i je porównywać.

# Identify the hash type first
hashid 5f4dcc3b5aa765d61d8327deb882cf99

# Dictionary attack with hashcat (mode 0 = raw MD5)
hashcat -m 0 hash.txt rockyou.txt

# John the Ripper alternative
john --wordlist=rockyou.txt hash.txt

Powtarzalny schemat pracy

Warto połączyć wszystko w jeden spójny cykl obejmujący obie kategorie:

  • Obserwuj — przeczytaj treść zadania, wyświetl kod źródłowy i ustal rodzaj kodowania lub schematu.
  • Postaw hipotezę — określ prawdopodobną rodzinę podatności.
  • Wykonaj mały test — wyślij jeden testowy payload i obserwuj dokładną odpowiedź.
  • Wykorzystaj podatność — rozbuduj działający test do pełnego payloadu, który zwróci flagę.
  • Udokumentuj — zapisz payload i uzasadnienie, póki są jeszcze świeże.

Ten cykl pozwala uniknąć ślepych zaułków i niemal bez dodatkowego wysiłku prowadzi do powstania writeupu.

Szybki sprawdzian

Sprawdź znajomość podstaw zagadnień webowych i kryptograficznych.

Podsumowanie

Omówiono powtarzające się zadania webowe i kryptograficzne:

  • Web: najpierw sporządź mapę, a następnie testuj pod kątem SQL injection, XSS, SSRF i path traversal — wszystkie te podatności wynikają z niebezpiecznego zaufania do danych wejściowych użytkownika, a każdą z nich naprawia się przez oddzielenie kodu od danych.
  • Kryptografia: odróżniaj kodowanie od szyfrowania, łam klasyczne szyfry i szyfry XOR, wykorzystuj błędy parametrów RSA i łam hashe za pomocą list słów.
  • Jeden cykl: obserwuj, postaw hipotezę, testuj, wykorzystaj podatność, udokumentuj — sprawdza się w obu kategoriach.

Następnie przejdziesz do reverse engineeringu i eksploatacji plików binarnych.

Często zadawane pytania

Czy lekcja „Wyzwania webowe i kryptograficzne” jest bezpłatna?

Tak — pełny tekst „Wyzwania webowe i kryptograficzne” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cyber Security Academy, przejdź na CoddyKit PRO. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Wyzwania webowe i kryptograficzne”?

Rozwiązywanie typowych zagadek webowych i kryptograficznych Ćwiczysz Cyber Security Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cyber Security Academy?

Nie wymagamy żadnego doświadczenia. Cyber Security Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Wyzwania webowe i kryptograficzne”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cyber Security Academy?

Tak. Każda lekcja Cyber Security Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Kategorie CTF i sposób myślenia
  2. Wyzwania webowe i kryptograficzne
  3. Podstawy reverse engineeringu i pwn
  4. Narzędzia i write-upy
← Powrót do Cyber Security Academy