Principe:
Créer un contrat appelant un contrat pour entrer dans Hallebarde (ou utiliser un contrat déjà existant)
Le challenge
Exploration de l'historique
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.
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