Principe:
Derouler l'exécution d'un JS pas à pas dans une apge web pour trouver un code PIN menant à une page cachée contenant le flag
Le challenge
Explorons
On cherche la solution dans du code JS car si on entre un PIN, aucune requête Web n'apparait dans le panneau "Network/Réseau", ce qui signifie que la vérification du PIN est faite côté client. Comme elle n'est pas directement faite en HTML (via pattern par exemple), c'est qu'elle l'est en JS (d'autant plus que le nom du challenge nous l'indique aussi)
Alors, dans un CTF, ok, vous pouvez faire un challenge d'intro basé sur des vérifications de sécurité (PIN) côté client. Mais, vraiment, ne faites juste jamais ça en vrai… Non parce que le challenge a beau dire que le site est vieux de 12 ans, ce sont encore des pratiques que je vois aujourd'hui, même sur des projets tout neuf!
C'est donc la preuve
objective et totalement sérieuse
que le JS est maléfique!
Du reverse?
NodeJS nous renvoie ici à nouveau un autre code source, qui sera sans doute passé dans un eval. Ce code, utilisant uniquement des []!+() est un classique (dont j'ai oublié le nom)
Nan, faisons simple
Une telle obfuscation, pour un challenge d'intro, c'est pas crédible, alors, on change de stratégie On va plutôt mettre un point d'arrêt dans le code lisible
Ce code se trouve dans "SOURCE" (titre de l'onglet): il s'agit donc certainement d'un code exécuté via un eval ou une commande similaire. On ne le retrouvera pas en clair dans le index.js mais on a ici tout ce qu'il nous faut: on a le PIN 240801300505131273100172 (tiens, lui, je ne l'aurai pas trouvé au pif, comme dans Frida-me (Reverse) ) et une URL cachée ./nob03y_w1lL_Ev3r_fiNd_th15_PaGe.html
Flag
J'ai cherché s'il y avait un flag caché ou une astuce dans la liste des noms, mais je n'ai rien trouvé