DEV Community

ciscodiazo
ciscodiazo

Posted on • Originally published at dev.to

Ethernaut Nivel 0: Hola Ethernaut

Nivel 0: Hola Ethernaut

Este es el nivel 0 del juegoEthernaut.

requisitos previos

Atajos

has leído las instrucciones del nivel 0 y ha adquirido el éter de prueba. Los métodos de contrato de nivel se inyectan directamente en la consola de nuestro navegador, por lo que podemos comenzar a llamar a los métodos.

antes de iniciar:

  1. Configurar MetaMask
  2. Abra la consola del navegador Abra la consola de su navegador: Tools > Developer Tools. comando (await chrome 64) player
  3. Usa los ayudantes de la consola getBalance(player)
  4. El ethernaut contract ethernaut
  5. Interactuar con ABI ethernaut.owner()
  6. Obtener una instancia de nivel level instance
  7. Inspección del contrato contract
  8. Interactuar con el contrato para completar el nivel contract.info()

Empecemos. Las instrucciones piden llamar a este método en la consola:

await contract.info()

// Output: 'You will find what you need in info1().'
Enter fullscreen mode Exit fullscreen mode

Seguimos la salida y llamamos:

await contract.info1()

// Output: 'Try info2(), but with "hello" as a parameter.'
Enter fullscreen mode Exit fullscreen mode

Siguiente...

await contract.info2("hello")

// Output: 'The property infoNum holds the number of the next info method to call.'
Enter fullscreen mode Exit fullscreen mode

Para obtener infoNum llamamos captador público:

await contract.infoNum().then(v => v.toString())

// Output: 42
Enter fullscreen mode Exit fullscreen mode

Tenga en cuenta que infoNum() devuelve un objeto BigNumber, por lo que lo convertimos en una cadena para ver el número real.

Procediendo con info42:

await contract.info42()

// Output: 'theMethodName is the name of the next method.'
Enter fullscreen mode Exit fullscreen mode

De nuevo, siguiente salida:

await contract.theMethodName()

// Output: 'The method name is method7123949.'
Enter fullscreen mode Exit fullscreen mode

Y entonces:

await contract.method7123949()

// Output: 'If you know the password, submit it to authenticate().'
Enter fullscreen mode Exit fullscreen mode

Ok... pero cual es la contraseña? Inspeccionemos los contratos ABI:

contract

// Output: { abi: ..., address: ..., ...., password: f () }
Enter fullscreen mode Exit fullscreen mode

Al inspeccionar vemos que hay un password método para el contrato. Llamémoslo:

await contract.password()

// Output: 'ethernaut0`
Enter fullscreen mode Exit fullscreen mode

Tenemos la contraseña. Finalmente:

await contract.authenticate('ethernaut0')
Enter fullscreen mode Exit fullscreen mode

y confirme la transacción en metamask. Enviar instancia.

Top comments (0)