Tenue de soirée requise

Catégorie: WEB - Points: 300 - Difficulté: Simple - Solves: 44 Description: Dans le fichier excel, une cible importante est liée à un lien vers une loterie. Cette loterie permet au gagnant d'accéder à une soirée VIP. Nous supposons que la cible sera présente à cet événement. Nous devons gagner cette loterie afin de pouvoir prendre contact avec elle. Bien commencer : Si nous parvenons à récupérer l'algorithme de génération de la loterie, nous pouvons gagner à coup sûr. Lien : subscription.challenge.operation-kernel.fr

Indice:

Il peut arriver que les développeurs oublient d'enlever un dossier très important du site qui permet d'obtenir la totalité du code source de l'application. Reculer pour mieux sauter est aussi important ici.

Solution: Pour résoudre ce challenge il faut trouver un moyen de récupérer les scripts de cette application web. Comme il est dit dans l'article, un "dossier" n'a pas été enlevé et ce dernier est très important. Cherchons donc de quel dossier il pourrait s'agir et qui contiendrait tout les fichiers du projet.

Dans un premier nous pouvons essayer de faire une énumération de fichiers/dossiers avec ZAP mais cela ne donne pas grand chose. Mais dans l'indice il est également que reculer permet de mieux sauter. Qu'est-ce que cela peut-il bien vouloir dire ? Ah bah oui, plutôt que de chercher dans /public et faut chercher à la racine. Mais à la racine nous avons toujours une 403... Il faut donc continuer à chercher.

Essayons de voir ce que l'on peut faire avec ce dernier une fois dé-obfusqué :

<?php

namespace App\Process;

class GameProcess
{
    private function nmqrF($AvWAj)
    {
        $tqGDw = "";
        $VP0PR = 0;
        p1w0G:
        if (!($VP0PR < strlen($AvWAj) - 1)) {
            return $tqGDw;
        }
        $tqGDw .= chr(hexdec($AvWAj[$VP0PR] . $AvWAj[$VP0PR + 1]));
        $VP0PR += 2;
        goto p1w0G;
    }
    private function prepare_user($user)
    {
        $res = "";
        foreach (str_split($user) as $COwbt) {
            $res .= ord($COwbt);
        }
        return $res;
    }
    private function prepare_number($user2)
    {
        #eval($this->nmqrF("6576616C286261736536345F6465636F646528274A485A50524870454944306764476C745A5367704943306764476C745A536770494355674E54733D2729293B"));
                $vODzD = time() - time() % 5;
        $user2 ^= $vODzD;
        mt_srand($user2);
        $G11Pq = mt_rand();
        $G11Pq ^= $user2;
        return $G11Pq;
    }
    public function play($username, $numero_user)
    {
        $user2 = $this->prepare_user($username);
        $kx4Dd = $this->prepare_number($user2);
        if (!(intval($kx4Dd) === intval($numero_user))) {
            return false;
        }
        return true;
    }
}
?>

Et en scannant ce QR-Code, le flag est accessible.

🚩 FLAG
HACK{Y0uC4nNowG0toE4t}

Last updated