LAIN vs Knights
Flag: ECW{L41N_15_7H3_0NLY_0N3_WHO_C4N_ST0P_M3}
Challenge
Description
**Level 3 - UART HARDWARE
LAIN vs THE WIRED**
Welcome to The Wired: A digital labyrinth of over a thousand mysterious nodes, where only seven are protected by the legendary Knights.
You are Lain. Your mission: Navigate this cryptic UART interface, explore The Wired, and uncover the locations of the hidden Knights. Purge each Knight !
Each defeated Knight grants you a fragment. Collect all seven fragments to unlock the final gateway : EIRI MASAMI β the master of The Wired.
Seize root access. Become the new legend of The Wired.
Format: ECW{flag}
Challenge made by Eun0us from:
Ce challenge tourne sur un docker et n'est pas disponible
Solution
Ce challenge est la suite de LAIN_Breakcore. Je rΓ©utilise la classe de base pour discuter avec le serveur, mais avec quelques modifications. Pour une question de simplicitΓ©, j'ai sΓ©parΓ© en diffΓ©rents fichiers Python.
HOST = "challenges.challenge-ecw.eu"
TX = 35061
RX = 35062Reconnaissance du challenge
Première chose à faire, énumerer les commandes et savoir quoi faire
Il y a 1200 nodes, et 7 chevaliers sont cachΓ©s dans celles-ci. Il faut tous les dΓ©faire pour rΓ©ussir le challenge.
Scan des nodes
Maintenant il faut trouver les chevaliers, donc on va tout scanner
On a trouvΓ© tous les chevaliers, mais on voit qu'il y a aussi des nodes lain. Celles-ci contiennent des informations complΓ©mentaires sur le challenge.
En se connectant Γ l'une d'entre elle, on a des commandes exclusives, notamment node.truth. En spammant cette commande, on peut y apprendre :
Allez, c'est parti pour le grind, purgeons ces chevaliers !
1. Knight of I2C MIRROR
Ici il faut envoyer deux nombres dont la somme des octets donnent la mΓͺme chose modulo X.
Bon, on va pas s'embΓͺter et simplement envoyer 00 et X. Ici j'avais mod 163, donc j'envoie 00 et A3 :
2. Knight of Streams
LΓ il faut trouver un message dont le CRC8 donne X. SubtilitΓ© : le poly change. Je suis donc parti sur la lib Python crc. Ensuite, on bruteforce en local un octet qui donne le rΓ©sultat attendu :
3. Knight of SPI PARITY
Un des plus simple, on se casse pas la tΓͺte. On me demande un nombre qui a 5 transitions de bits : 01010111.
4. Knight of SRAM Write
Aussi connu sous le nom de chevalier clown, c'est le plus simple des dΓ©fis. On envoi ce qui est demandΓ©...
5. Knight of LOGIC AND
Ici on commence par envoyer n'importe quoi, Γ§a nous dira que le rΓ©sultat est diffΓ©rent du secret en le leakant.
J'ai eu le secret 0x00 mais Γ§a peut-Γͺtre n'importe quoi. Il ne reste plus qu'Γ envoyer le secret avec 0xff pour que le rΓ©sultat du AND donne le secret.
6. Knight of FUSE BITS
Là il faut trouver le secret après application de notre masque. On envoie donc 0xff pour récupérer le secret : 0x3a ici.
Maintenant on soumet le secret rΓ©cupΓ©rΓ© :
7. Knight of FAULT INJECTION
HonnΓͺtement le plus relou. J'ai peut-Γͺtre pas compris ce qui Γ©tait attendu donc je propose un bruteforce tout simplement. On nous demande un offset et un mask pour bitflip le bon bit (qu'on connait pas).
Founder
Maintenant, il faut simplement suivre ce que LAIN nous a dit au début : on assemble les fragments dans le bon ordre, on applique un SHA256 dessus et on ne garde que les 24 premier caractères hex.
Mis Γ jour