Vous êtes en RETARD

404CTF{gluten-sucre-au-sucre}

Catégorie: Web Difficulté: introduction Flag: -

Challenge

Description


Vous voilà devant le stade pour voir le dernier match de votre équipe préférée, le Gorfou FC ! Malheureusement, vous êtes arrivé.e en retard et l'entrée est fermée... Mais pas de panique, il vous suffit de trouver un moyen pour quand même rentrer !

Connexion: https://en-retard.challenges.404ctf.fr

Solution

/

Le site contient un panneau interdit, en regardant le code source, on voit qu'il y a un bouton ENTRER qui nous redirige sur /donnez-moi-mon-ticket-pitie

/
<body>
    <div class="panneau"></div>
    <button class="entrer-dans-le-stade">ENTRER</button>
    <div class="barre-en-fer"></div>
    <textarea class="zone-texte" readonly>
    </textarea>
    <div class="credits-image">
        <p>Image de <a href="https://fr.freepik.com/photos-gratuite/tunnel-souterrain-qui-mene-exterieur_7908947.htm#fromView=search&page=1&position=42&uuid=04bdc1b8-5842-46af-a98f-7e718c55f7da">wirestock</a> sur Freepik</p>
    </div>
</body>

<script>
    // ...
    document.querySelector('.entrer-dans-le-stade').addEventListener('click', function() {
        window.location.href = '/donnez-moi-mon-ticket-pitie';
    });
    //...
</script>

Il suffit soit de retirer manuellement le panneau "INTERDIS" dans l'HTML ou de visiter direction le prochain lien.


/donnez-moi-mon-ticket-pitie

Dans le JavaScript, on voit qu'en cliquant sur "valider votre billet" une vérification est faite avant de pouvoir faire un POST sur /set-cookie et d'être redirigé sur /devant-le-match

Il faut que la variable globale validable contiennent la valeur de l'attribut id de l'élément .billet

/donnez-moi-mon-ticket-pitie
<img src="/static/images/ticket.png" class="billet" id="053HJ28LOS">
<!-- DES TRUCS INUTILES -->
<script>
    var bouton = document.querySelector('.valider-billet');
    var billet = document.querySelector('.billet');
    window.validable = [];
    bouton.addEventListener('click', function() {
        if (window.validable.includes(billet.id)) {
            fetch('/set_cookie', {method: 'POST'}).then(function() {
                window.location.href = "/devant-le-match";
            });
        } else {
            alert('Billet non validé');
        }
    });
</script>

On peut ajouter à l'aide de la console l'id à la variable avant de cliquer sur le bouton. Il est également possible de faire d'autres méthodes comme faire les requêtes directement.

Dans la console, on entre :

validable.push(billet.id)

/devant-le-match

Il suffit maintenant d'aller regarder les cookies pour retrouver notre flag, dans le devtools par exemple

Dernière mise à jour

Cet article vous a-t-il été utile ?