Défis/Le champ qui accepte trop
Retour aux défis
Difficile

Le champ qui accepte trop

150 points · catégorie web

Contexte

Le endpoint PATCH /api/users/me d'une application de test accepte un JSON et met à jour directement tous les champs reçus sur l'enregistrement utilisateur en base, sans liste blanche :

python
def update_me(user_id, payload: dict):
    user = db.get_user(user_id)
    for key, value in payload.items():
        setattr(user, key, value)
    db.save(user)

Un utilisateur normal envoie habituellement {"bio": "...", "avatar_url": "..."}.

Mission

Le modèle User possède aussi un champ is_admin (booléen). Donne le corps JSON exact (une seule ligne) qu'un attaquant enverrait à ce endpoint pour s'auto-promouvoir administrateur.