Pense-bête (Web3) - 404CTF 2022

Pense-bête (Web3) - 404CTF 2022

Fichiers du challenge Principe:
Explorer la blockchain via Etherscan pour trouver le flag dans un transaction passée

Le challenge

Le challenge va nous introduire web3 (ça va "pas" faire mal)
Il nous demande de trouver le mot de passe (ici) que Hallebarde aurait leaké dans la blockchain

Un compte

On va d'abord installer MetaMask (dans un navigateur pérave qu'on n'utilise jamais d'habitude) et choisir un mot de passe
Metamask nous donne alors des mots qui constitueront une "clef de secours"

Oui, je m'en tappe qu'elles soient trouvables dans mes screens, car ce compte bidon ne me sert qu'au CTF

"""Youpi""", j'ai tellement hâte

Test network

Le challenge nous a dit d'utiliser le réseau de test, donc, on va configurer MetaMask en conséquence
On doit d'abord dire à Metamask d'afficher les réseaux de test
Puis on rejoint le réseau "Ropsten"

Crédit de test

On demande alors, à un autre compte, de nous filer des Ether pour avoir le droit de requêter ce réseau
Yummi! Cela va tellement être la joie ces challenges!

Ah oui, au fait, il me faut 20 secondes pour lancer MetaMask, donc, il est évident que je n'allais pas faire ces challenges avec grand entrain. Même si, au final, c'était intéressant d'en apprendre plus sur cette énorme usine à gaz (et à CO²) inutile qu'est la blockchain et le "web3"

On essaie alors un autre provider d'Ether, et ça marche enfin

Un transfert bidon

Tant qu'à grenouiller dans cette blockchain, j'essaie de transférer de l'ETH vers le compte du CTF

Cet ETH n'a aucune valeur. Enfin, comme tous les ETH. Mais sur le network de test, vraiment, ça n'en a aucune (d'où le fait qu'on puisse demander 10 ETH à un site web random)

Ce transfert foira…

Rage quit

Je me suis alors dit, "f-ck this sh-t"

Etherscan

La transaction ayant fail, je trouve un lien vers "etherscan" dans MetaMask. "Etherscan" liste en pratique les transactions passées de la blockchain (réseau ropsten de test, ici). Je suis donc allé voir l'adresse du compte du CTF .

En remontant l'historique, je trouve une transaction "0x60806040" estampillée "Create: Password"
Dans le détail de la transaction, on trouve un "Input Data", en hexa
Une fois affiché en "UTF8", on trouve ce qui ressemble au flag
Cette valeur est également présente dans le code de création du contrat, dans les arguments du constructeur
Enfin, on la retrouve dans le "Read contract", dans le champ "password":
404CTF{M0N_M07_D3_P4553_357_7r0P_53CUr153_6r4C3_4_14_810CKCH41N}
On peut d'ailleurs vérifier qu'il s'agit bien du mot de passe (bool: true en réponse)

En pratique, si j'ai bien compris, cette transaction a été émise par le compte du CTF. Elle a créé le contrat intro.sol (dont on nous donnait la source mais qui ne m'a servit à rien). Ce contrat possède un champ "password" qui est public (d'où sa présence dans "read contract"), et son contructeur prend ce "password" en paramètre (qu'on retrouve dans le "Code" du contrat).

Fichiers du challenge

↩ Retour à la liste des challenges

⇇ Retour à l'accueil