Skip to content

Then obfuscation is more secure


Description

Write Up: Njal
Catégorie: JavaScript
Author : Mr.Un1k0d3r
Difficulté: Unknown

Enoncé

Juste le phrase d'interrogation : Then obfuscation is more secure?
Et un formulaire de connexion.


Solution détaillée

Afin de trouver le mot de passe correcte et de se connecter avec succès à un compte, on réalise les étapes suivantes :

  1. Inspecter le formulaire de connexion avec les outils de développement : Dans le code JavaScript, on identifie des chaînes obfusquées. Le code utilise un tableau pour stocker des chaînes de caractères sous forme de valeurs hexadécimales obfusquées.

  2. Déchiffrer les Chaînes Obfusquées :

    Chaque chaîne est codée en utilisant des séquences hexadécimales. Pour les décoder, on suit ces étapes : a. Convertir les Valeurs Hexadécimales On convertit chaque séquence hexadécimale en texte lisible. // Exemple de conversion de hex en texte en JavaScript console.log(String.fromCharCode(0x76, 0x61, 0x6C)); // Affiche "val" b. Déchiffrer les Chaînes dans le Code On applique cette conversion à toutes les valeurs hexadécimales dans le tableau _0xc360. Voici les résultats : \x76\x61\x6C → "val" \x23\x63\x70\x61\x73\x73 → "#cpass" \x61\x6C\x6B\x33 → "alk3" \x30\x32\x6C\x31 → "02l1" \x3F\x70\x3D → "?p=" \x69\x6E\x64\x65\x78\x4F\x66 → "indexOf" \x68\x72\x65\x66 → "href" \x6C\x6F\x63\x61\x74\x69\x6F\x6E → "location" \x3C\x64\x69\x76\x20\x63\x6C\x61\x73\x73\x3D\x27\x65\x72\x72\x6F\x72\x27\x3E\x57\x72\x6F\x6E\x67\x20\x70\x61\x73\x73\x77\x6F\x72\x64\x20\x73\x6F\x72\x72\x79\x2E\x3C\x2F\x64\x69\x76\x3E → "

    Wrong password sorry.
    " \x68\x74\x6D\x6C → "html" \x23\x63\x72\x65\x73\x70\x6F\x6E\x73\x65 → "#cresponse" \x63\x6C\x69\x63\x6B → "click" 4. Analyser l'Utilisation des Chaînes : On remplace les indices du tableau par les chaînes déchiffrées dans le code : $("#cresponse").click(function () { var password = $("#cpass").val(); // Obtient la valeur du champ #cpass var correctPassword = "02l1alk3"; // Mot de passe attendu if (password == correctPassword) { // Vérifie si le mot de passe est correct if (document.location.href.indexOf("?p=") == -1) { // Vérifie si "?p=" est absent de l'URL document.location = document.location.href + "?p=" + password; // Ajoute "?p=" suivi du mot de passe à l'URL } } else { $("#cresponse").html("
    Wrong password sorry.
    "); // Affiche un message d'erreur } }); On en déduit que le mot de passe attendu est "02l1alk3". 4. Soumettre le mot de passe dans le formulaire :
    • On soumet via le formulaire de connexion le mot de passe "02l1alk3" trouvé précédemment et on obtient le flag.
    • Enfin, on soumet le flag " FLAG-5PJne3T8d73UGv4SCqN44DXj " pour résoudre le challenge.