Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CyberCTF

Plateforme de Capture The Flag (CTF) destinée aux étudiants et formateurs en cybersécurité. Les étudiants résolvent des challenges en soumettant des flags, les formateurs créent les épreuves et suivent les performances en temps réel.

Fonctionnalités

  • Catalogue de challenges classés par catégorie, difficulté et points
  • Soumission de flags avec validation côté serveur
  • Scoring dégressif : le 1er à résoudre obtient les points pleins, chaque résolution suivante vaut 1 point de moins (aucun plancher)
  • Classement temps réel mettant en évidence l'utilisateur connecté
  • Espace formateur / admin : création de challenges, suivi des performances, gestion des comptes étudiants
  • Authentification sécurisée (inscriptions publiques désactivées — comptes créés par un formateur/admin)
  • Sécurité : RLS strict sur toutes les tables, calcul de score via RPC SECURITY DEFINER côté serveur uniquement

Stack technique

  • Frontend : React 18, Vite 5, TypeScript, Tailwind CSS, shadcn/ui
  • Backend : Lovable Cloud (Supabase managé en EMEA) — Postgres, Auth, Edge Functions
  • Design : esthétique cyberpunk (bleu électrique, fond sombre, accents violets, JetBrains Mono)

Architecture

src/
├── pages/              # Auth, Challenges, Leaderboard, Manage, Index
├── components/         # Navbar, NavLink, ui/ (shadcn)
├── hooks/              # useAuth, use-toast, use-mobile
├── integrations/
│   └── supabase/       # client + types (auto-générés)
└── index.css           # tokens de design (HSL)

supabase/
├── migrations/         # schéma + RLS + fonctions SQL
└── functions/
    ├── create-student/ # création d'un compte étudiant (admin/formateur)
    └── reset-users/    # réinitialisation des comptes

Modèle de données

  • profiles — infos publiques (nom, email)
  • user_roles — rôles admin / formateur / etudiant (table séparée pour éviter l'escalade de privilèges)
  • ctf_challenges — titre, description, flag, points, catégorie, difficulté
  • submissions — historique des tentatives (correctes ou non)

Sécurité

  • RLS activée sur toutes les tables
  • Fonction has_role() en SECURITY DEFINER pour éviter la récursion RLS
  • Fonction get_user_score() côté serveur : empêche la manipulation des scores par le client
  • EXECUTE révoqué pour anon sur toutes les fonctions sensibles

Installation locale

Prérequis

  • Node.js 18+ (recommandé : 20+)
  • npm, bun ou pnpm
  • Un projet Lovable Cloud (ou Supabase) avec les migrations appliquées

Étapes

  1. Cloner et installer

    git clone https://github.com/K3lgy/CYBERCTF
    cd cyberctf
    npm install
  2. Configurer les variables d'environnement

    Créer un fichier .env à la racine :

    VITE_SUPABASE_URL=https://<votre-projet>.supabase.co
    VITE_SUPABASE_PUBLISHABLE_KEY=<votre-clé-anon>
    VITE_SUPABASE_PROJECT_ID=<id-du-projet>

    Sur Lovable Cloud, ce fichier est généré automatiquement.

  3. Appliquer les migrations

    Les migrations SQL se trouvent dans supabase/migrations/. Sur Lovable Cloud elles sont appliquées automatiquement. En local avec la CLI Supabase :

    supabase link --project-ref <ref>
    supabase db push
  4. Déployer les Edge Functions (optionnel pour le dev local)

    supabase functions deploy create-student
    supabase functions deploy reset-users

    Sur Lovable Cloud le déploiement est automatique.

  5. Lancer le serveur de dev

    npm run dev

    L'application est disponible sur http://localhost:8080.

Comptes par défaut

  • Admin : admin@kapelgy.com / K@p3lgy!Adm1n#2026$Secure
  • Étudiants : créés depuis l'espace admin/formateur (les inscriptions publiques sont volontairement désactivées)

Scripts disponibles

Commande Description
npm run dev Démarre le serveur de développement Vite
npm run build Build de production
npm run preview Aperçu du build de production
npm run lint Vérification ESLint
npx vitest run Exécute la suite de tests

Aperçu de la plateforme

Login CyberCTF

Catalogue des challenges

Leaderboard en temps réel

Déploiement

Le projet est déployé en continu via Lovable :

Il peut aussi etre installé en local.

Installation locale

Prérequis

  • Node.js 18+ (recommandé : 20+)
  • npm, bun ou pnpm
  • Un projet Lovable Cloud (ou Supabase) avec les migrations appliquées

🚀 Installation automatisée avec start.sh

Pour simplifier l’installation du projet, vous pouvez utiliser un script start.sh qui automatise le clonage et l’installation des dépendances.

1. Créer le fichier start.sh à la racine du projet

#!/bin/bash

set -e

echo "🚀 Clonage du projet CyberCTF..."

# Remplacer par l'URL réelle du repo si nécessaire
git clone <url-du-repo> cyberctf
cd cyberctf

echo "📦 Installation des dépendances..."
npm install

echo "⚙️ Configuration de l'environnement..."

if [ ! -f .env ]; then
  cp .env.example .env 2>/dev/null || echo "Aucun .env.example trouvé, créez le fichier .env manuellement."
fi

echo "✅ Installation terminée !"
echo "👉 Lancez le projet avec : npm run dev"

2. Rendre le script exécutable

chmod +x start.sh

3. Lancer l’installation

./start.sh

Étapes (installation manuelle alternative)

  1. Cloner et installer

    git clone <url-du-repo>
    cd cyberctf
    npm install
  2. Configurer les variables d'environnement

    Créer un fichier .env à la racine :

    VITE_SUPABASE_URL=https://<votre-projet>.supabase.co
    VITE_SUPABASE_PUBLISHABLE_KEY=<votre-clé-anon>
    VITE_SUPABASE_PROJECT_ID=<id-du-projet>

    Sur Lovable Cloud, ce fichier est généré automatiquement.

  3. Appliquer les migrations

    supabase link --project-ref <ref>
    supabase db push
  4. Déployer les Edge Functions (optionnel)

    supabase functions deploy create-student
    supabase functions deploy reset-users
  5. Lancer le serveur de dev

    npm run dev

    L'application est disponible sur http://localhost:8080.

Licence


Projet : K3LGY Cybersécurité Auteur : K3LGY (ou nom à compléter) Type : Licence propriétaire – usage strictement limité

1. Droits d’auteur

Tous les droits relatifs au présent projet, incluant le code source, la documentation, les ressources pédagogiques et tout contenu associé, sont réservés à son auteur.

Ce projet est protégé par le droit d’auteur. Toute reproduction, modification, distribution ou utilisation sans autorisation explicite est interdite.

2. Utilisation autorisée

Ce projet est fourni uniquement à des fins pédagogiques et de démonstration.

Vous êtes autorisé à :

  • Consulter le code pour un usage personnel ou éducatif
  • Utiliser le projet dans un cadre d’apprentissage non commercial

3. Utilisation interdite

Sans autorisation écrite préalable de l’auteur, il est strictement interdit de :

  • Copier, modifier ou redistribuer le projet
  • Utiliser le projet à des fins commerciales
  • Intégrer tout ou partie du projet dans un autre logiciel ou service
  • Publier une version dérivée (fork, clone ou reupload public)

4. Propriété intellectuelle

Le projet reste la propriété exclusive de son auteur. Aucun droit de propriété n’est transféré à l’utilisateur.

5. Absence de garantie

Ce projet est fourni "en l’état", sans garantie d’aucune sorte. L’auteur ne peut être tenu responsable des dommages directs ou indirects liés à son utilisation.

6. Autorisation exceptionnelle

Toute utilisation non couverte par cette licence doit faire l’objet d’une demande d’autorisation écrite auprès de l’auteur.

© K3LGY — Tous droits réservés+ GitHub

About

CyberCTF est une plateforme de Capture The Flag pour étudiants et formateurs en cybersécurité. Elle permet de créer et résoudre des challenges, soumettre des flags, suivre un scoring dégressif et un classement en temps réel, avec un espace admin sécurisé et la gestion des comptes utilisateurs.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages