Principe:
Trouver la clef publique d'une adresse de la blockchain
Infos (cf menu latéral):
🚩 Flaggué! +997 points gagnés —
💾 Téléchargez les fichiers du challenge
404CTF{0xb227feb5ecb369faf668f711f2331d163244fddb5e297be94fe30046b261732fda92d1afe5578f1d88c29ae439a7220ecc984701411742b5fec2b1639433100d}
Le challenge

Le zip du challenge ne contient que les fichiers spécifiques au challenge. Les fichiers additionnels (geth, node modules) sont disponibles là
Vous avez déjà du voir que je n'aime pas le web3 (d'autant plus quand un challenge se base sur le fait qu'il soit difficile de trouver la clef publique d'un compte!), donc ne vous étonnez pas du nom de mes fichiers ou de mes variables!

Etherscan



Mais ceci n'est pas le flag du challent! Ce n'est pas une clef publique



NodeJS


Alors, il faudra m'expliquer comment le web3 peut être "décentralisé" s'il faut un provider pour accéder à la blockchain. En fait, non, m'expliquez pas: je m'en fous 😂


A la mano


Ignorer un byte

0x04
) alors la fin de son Keccak-256 correspond à l'adresse secrète
En fait, la clef publique commence pas 0x03
si elle est au format compressé, et par 0x04
si elle est décompressée. Or, c'est la clef publique décompressée elle-même dont on a besoin, d'où le fait d'ignorer ce premier caractère.


Oui, j'avais franchement été saoulé par ce challenge et la complexité bordelique pour une information aussi simple qu'une clef publique (la "documentation" totalement inconsistante et basée sur les bruits de couloirs du net et la spéculation des gens sur StackOverflow n'a pas aidé).
Flag: 404CTF{0xb227feb5ecb369faf668f711f2331d163244fddb5e297be94fe30046b261732fda92d1afe5578f1d88c29ae439a7220ecc984701411742b5fec2b1639433100d}