LAIN vs Knights

Flag: ECW{L41N_15_7H3_0NLY_0N3_WHO_C4N_ST0P_M3}

Challenge

circle-info

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:

circle-exclamation

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.

static.py
HOST = "challenges.challenge-ecw.eu"
TX = 35061
RX = 35062

Reconnaissance 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