Writeups
  • ℹ️Infos
  • 🗓️2021
    • DvCTF (to join DaVinciCode)
      • Crypto
        • Baby RSA
        • Ressaye
        • Unbreakable encryption
      • Forensics
        • Broken Portrait
        • Russian Dolls
        • Sus USB
      • Misc
        • Jus de Flag
        • Welcome
      • OSINT
        • Absolutely Nuts
      • Progra
        • Snoop's Mission
      • Reverse
        • Baby Reverse
        • Basic Cracking
        • Code Pyn
      • Steganography
        • Colorful Code
        • Hurt Your Eyes
        • Orchestra of Flags
        • Tyger
      • Web
        • Have I Been Pwned
        • What's Up ?
  • 🗓️2022
    • DvCTF 2022
      • Crypto
        • Cwryptographic Owacle
        • Secure Or Not Secure
        • small weiner
      • Forensics
        • Very Bad Script
      • Misc
        • Data Leak
        • Going postal
        • The Hacker Man
      • OSINT
        • Elon Musk
        • Monkeey
        • Painting Spot
        • Welcome to the DaVinciCTF!
      • Pentest
        • DaVinci's Playlist : Part 1
        • DaVinci's Playlist : Part 2.5
        • DaVinci's Playlist : Part 2
      • Programming
        • Heaven's Gate
        • Sudoku
        • TicTacToe
      • Reverse
        • CryptoVault
        • Mine Game
        • Obfuscated
        • Peripheral Interface Controller XVI
      • Steganography
        • ICMP
        • The Arts of Details
        • Treasure
      • Warmup
        • EBG13
        • FrenchFlag
        • MP3
        • QmFzZTY0
        • RSA
        • Welcome
      • Web
        • CyberStreak v1.0
        • 🎵
    • picoCTF 2022
      • Challs WU
    • @HackDay - Qualifications
      • Crypto
        • Francis Bacon
        • Francs Maçons
        • Rotate-me!
        • Un message codé ?
      • Forensics
        • bad_timing_for_reversing
      • Hardware
        • Cubik'cipher
        • WebSDR
      • Reverse
        • Calling Conventions
        • Memory Investigation
      • Steganography
        • I can make pictures
        • J'ai perdu le flag :(
        • Pokémons
        • Un coup de maître
        • Un logo cachotier
      • Web
        • GIT!
        • Part. 1 - Uploads
        • Part. 2 - Old md5
        • Part. 3 - sudo python
    • 404CTF
      • Crypto
        • Un simple oracle [1/2]
        • Un simple oracle [2/2]
      • Misc
        • Je suis une théière
        • Pierre-papier-Hallebarde
        • GoGOLFplex
      • OSINT
        • À l'aube d'un échange
        • Collaborateur suspect
        • Equipement désuet
      • Reverse
        • Mot de passe ?
      • Steganography
        • La plume à la main
        • PNG : Un logo obèse [1/4]
        • PNG : Drôles de chimères [2/4]
        • Toujours obèse [3/4]
      • Web
        • Fiché JS
        • Le braquage
        • Du gâteau
        • En construction !
    • Operation Kernel
      • Crypto
        • Scytale
      • Forensics
        • Research Paper
        • Excel Confidential
      • Reverse
        • CryptoLocker
        • What_If_CryptoLocker
      • Social Engineering
        • Pour vivre secure vivons caché
        • Pour vivre secure vivons caché Part 2
      • Stegano
        • AudioSpectre
        • Datacenter
        • Takazume
      • WEB
        • Research paper blog
        • SQL Project 1
        • SQL Project 2
        • SQL Project 3
        • Tenue de soirée requise
  • 🗓️2023
    • 404CTF 2023
      • Résultats
      • Analyse forensique
        • Pêche au livre
        • Le Mystère du roman d'amour
        • Les Mystères du cluster de la Comtesse de Ségur [1/2]
        • Lettres volatiles
        • Note de bas de page
      • Cloud
        • Le Sot
        • Le Cluster de Madame Bovary
        • Harpagon et le magot
        • Les nuages menaçants 1/3
        • Les nuages menaçants 2/3
      • Cryptanalyse
        • Recette
        • ASCON Marchombre
      • Divers
        • Bienvenue
        • Exemple de connexion à distance
        • Discord
        • À vos plumes !
      • Exploitation de binaires
        • Je veux la lune !
      • Programmation
        • L'Inondation
        • Des mots, des mots, des mots
      • Radio-Fréquence
        • Navi
        • Avez-vous vu les cascades du hérisson ?
        • Le Plombier du câble
        • Ballistic Missile Submarine
      • Renseignement en sources ouvertes
        • Le Tour de France
        • Les OSINTables [1/3]
        • Un vol ?
        • L'âme d'un poète et le coeur d'une femme [1/4]
        • L'âme d'un poète et le coeur d'une femme [2/4]
        • L'âme d'un poète et le coeur d'une femme [3/4]
        • L'âme d'un poète et le coeur d'une femme [4/4]
      • Rétro Ingénierie
        • Le Divin Crackme
        • L'Inspiration en images
      • Sécurité Matérielle
        • Un courrier suspect
        • Un réveil difficile
      • Stéganographie
        • Odobenus Rosmarus
        • L'Œuvre
        • Les Félicitations
        • En Profondeur
        • Le Rouge et le vert, avec un soupçon de bleu
      • Web
        • Le Loup et le renard
        • L'Académie du détail
        • La Vie Française
        • Fuite en 1791
        • L'Épistolaire moderne
        • Chanson d'Inde
      • Web3
        • Art
        • L'Antiquaire, tête en l'air
Powered by GitBook
On this page

Was this helpful?

  1. 2022
  2. Operation Kernel
  3. WEB

Tenue de soirée requise

PreviousSQL Project 3Next2023

Last updated 2 years ago

Was this helpful?

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 :

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.

Après quelques jours de recherches et le début de l'élaboration des WU pour ce CTF, l'idée est venue toute seule ! Un dossier que personne ne supprime et qui contient les fichiers sources n'est autre qu'un .git. Alors essayons de le prendre comme ça : Ah toujours une 403. Bon du coup il faut faire d'autres recherches pour voir comment obtenir un répertoire .git sans y avoir accès. Avec l'outil il est très simple de le récupérer et d'avoir tous les fichiers : (Pour télécharger l'arborescence) (Pour télécharger les fichiers et dossiers)

Une fois tout cela télécharger il faudra trouver le code du programme de la loterie. Nous savons que ce fichier s'appelle game ou du moins la fonction qui est exécutée alors faisons un grep -inR "game" . pour trouver les fichiers qui pourraient correspondre :

Il n'y a que 4 fichiers potentiellement intéressant mais un a l'air d'avantage suspect comparé aux autres. Il s'agit d'un script GameProcess obfusqué :

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}

Nous voyons qu'il y a une histoire avec la fonction time() de PHP. Le numéro gagnant est en effet regénéré toutes les 5 secondes. Il faut donc être rapide pour valider. Mais une fois cette étape terminée (et la plus dure à mon sens), nous arrivons sur la page finale :

🗓️
subscription.challenge.operation-kernel.fr
https://subscription.challenge.operation-kernel.fr/.git/
GitTools
image
image
image
image
image