Česká vzdělávací platforma pro CTF (Capture The Flag) soutěže v oblasti kyberbezpečnosti s herním rozhraním, příběhem a progresivním odemykáním výzev.
- Příběhový Režim - Lineární progrese s "AI" průvodcem "Agent Byte"
- Offline Mode - Funguje bez přihlášení s LocalStorage
- Auto-synchronizace - Po registraci se lokální progress sloučí s DB
- Admin Panel - Kompletní CRUD pro challenges a uživatele
- Dark Cyberpunk UI - Futuristický temný design s neonovými akcenty
- 20 Seed Challenges - Kapitoly: Web Basics, Cryptography, Forensics
- Easter Eggs - Skryté bonusy v BOSS výzvách
- Bezpečnost - CSRF protection, XSS sanitizace, bcrypt hashing
| Oblast | Technologie |
|---|---|
| Backend | PHP 7.4+, PDO, Sessions |
| Frontend | Vanilla JS (SPA), CSS3 |
| Database | MySQL 5.7+ / MariaDB 10.3+ |
| Server | Apache 2.4+ (mod_rewrite) |
| Security | bcrypt, CSRF tokens, XSS filters, CSP headers |
- PHP 7.4+
- MySQL 5.7+ / MariaDB 10.3+
- Apache 2.4+ (mod_rewrite)
# 1. Klonuj projekt
git clone https://github.com/StudentTraineeCenter/ctf-platform.git
cd ctf-platform
# 2. Import databáze
mysql -u root -p < db_schema.sql
# 3. Konfigurace
nano config.php # Uprav DB credentialsSpuštění: http://localhost/ctf-platform
Demo účet:
- Username:
demo - Password:
demo123
Admin:
- Username:
admin - Password:
admin123 - Panel: http://localhost/ctf-platform/admin/
Můžeš hrát bez registrace! Progress se uloží do LocalStorage a po registraci se automaticky synchronizuje.
- Otevři platformu
- Klikni na "MISSIONS"
- První challenge je odemčená: "Vítej v Matrix"
- Flag:
FLAG{welcome_to_shadow_protocol} - Po submitu se odemkne další výzva
- DOCUMENTATION.md - Kompletní technická dokumentace (API, databáze, bezpečnost)
- FLAGYTEST.md - Testovací flagy
URL: http://localhost/ctf-platform/admin/
- 📊 Statistiky (uživatelé, challenges, success rate)
- 👥 Top 10 hráčů žebříček
- ✏️ CRUD pro challenges (create, edit, delete)
- 👤 Správa uživatelů (make/remove admin, delete)
- 🔍 Search/filter funkcionalita
- 📈 Grafy podle kategorie a obtížnosti
- vytvoř noví účet a z účtu admin/admin123 mu dej práva admina
- poté se vrať na tvůj účet a smaž admin
- Přihlaš se jako admin
- Klikni "ADMIN PANEL"
- Sekce "PŘIDAT NOVOU CHALLENGE"
- Vyplň formulář:
- Title, Description (HTML podporováno)
- Category, Difficulty, Points
- Flag (ve formátu
FLAG{...}) - Story order (pořadí v příběhu)
INSERT INTO challenges (title, description, category, difficulty, points, flag_hash, story_chapter, story_order, is_unlocked_default, unlock_after_challenge_id, hint_text, tutorial_content, easter_egg)
VALUES (
'Název Challenge',
'<p>Popis výzvy v HTML</p>',
'Web',
'medium',
100,
'$2y$10$...bcrypt_hash...', -- použij generate_hash.php
'<div class="log-entry"><h4>Agent Log</h4><p>Story text...</p></div>',
21, -- pořadí v příběhu
FALSE, -- FALSE = musí být odemčená
20, -- ID předchozí výzvy (NULL pro první)
'Nápověda pro uživatele...',
'<h3>Tutorial Content</h3><p>Jak na to...</p>',
'SECRET_EASTER_EGG_CODE' -- NULL pokud nemá easter egg
);// config.php
define('DB_HOST', 'localhost');
define('DB_NAME', 'ctf_platform');
define('DB_USER', 'ctf_user'); // Vytvoř dedikovaného uživatele!
define('DB_PASS', 'silne_heslo_xyz123!@#'); // Silné heslo!
define('DEBUG_MODE', false); // VYPNI DEBUG!
define('PASSWORD_MIN_LENGTH', 8);- Nastav
chmod 600 config.php(Linux) - Aktivuj HTTPS v
.htaccessnebo odeber soubory README.md, FLAGYTEST.md, DOCUMENTATION.md, db_schema.sql
- Zkontroluj MySQL server (běží?)
- Ověř credentials v
config.php - Zkontroluj že databáze
ctf_platformexistuje
- F12 → Console (zkontroluj chyby)
- Ověř že
api.phpje dostupný - Zkontroluj CSRF token (F5 refresh)
-- Zkontroluj is_admin flag
SELECT username, is_admin FROM users WHERE username = 'tvuj_user';
-- Nastav admin práva
UPDATE users SET is_admin = 1 WHERE username = 'tvuj_user';ctf-platform/
├── index.php # Main SPA
├── api.php # AJAX API endpoint
├── config.php # Configuration
├── db.php # Database class (Singleton)
├── csrf.php # CSRF protection
├── xss.php # XSS sanitization
├── scripts.js # Frontend logic
├── styles.css # Dark theme CSS
├── ADMIN_INSTALACE.md
├── FLAGYTEST.md
├── db_schema.sql # Database + 20 seed challenges
├── admin/
│ ├── index.php # Admin dashboard
│ ├── admin_actions.php # Admin API
│ └── admin_migration.sql
├── challenges/ # Challenge HTML files
/* styles.css */
:root {
--color-neon-cyan: #00D1FF; /* Hlavní accent */
--color-neon-green: #00ff88; /* Success */
--color-neon-red: #ff0055; /* Error */
}MIT License - volně použitelné pro vzdělávací účely