La guerre des contrats 1/2 (Web3) - 404CTF 2022

La guerre des contrats 1/2 (Web3) - 404CTF 2022

Fichiers du challenge Principe:
Créer un contrat appelant un contrat pour entrer dans Hallebarde (ou utiliser un contrat déjà existant)

Le challenge

Le challenge nous demande de nous introduire dans le web3 d'Hallebarde dont les sources du contrat sont données et d'y trouver le flag

Exploration de l'historique

Comme Pense-bête (Web3) , je fouille donc l'historique des transactions du compte de ce challenge

Dans le code du contrat, on trouve msg.sender != tx.origin. D'après Internet, ceci ne peut arriver que si un contrat est à l'origine d'une transaction, auquel cas le sender sera l'adresse de ce contrat et le origin sera le compte ayant appelé ledit contrat.

J'explore donc l'historique des "transactions internes", c'est à dire des transactions d'un contrat à l'autre
Je m'intéresse au premier de la liste: il n'y a pas beaucoup d'historique
Mais comme cela ne coute rien (pas de "fail"), j'essaie son addresse: ça passe!
404CTF{5M4r7_C0N7r4C7_1NC3P710N_37_UND3rF10W_QU01_D3_P1U5_F4C113}

Je pensais avoir trouvé un trick pour résoudre ce challenge, mais avec le recul, je pense plutôt avoir pris l'adresse du contrat d'un autre participant.

Vu le texte du flag, je pense qu'il fallait:
- appeler GetMoney et prendre 4242 d'argent
- créer un contrat qui appelerait le contrat Hallebarde
- Dans cet appel, faire un GetMoney (pour initialiser les choses, au cas où)
- transférer >100 ether (100 * 10**18 + 1) vers l'adresse de notre contrat
- comme Hallebarde ne vérifie pas le solde, notre contrat a 100 ether +
- appeler notre contrat pour qu'il appelle celui de Hallebarde (enterHallebarde)
- Notre adresse originale est alors considérée comme membre de Hallebarde

Fichiers du challenge

↩ Retour à la liste des challenges

⇇ Retour à l'accueil