WriteUp del Reto Hacking Web3 «Blockchain Tour» & Nuevo Reto «Gas Knowledge» en Level_Up!
Si ya has jugado otros niveles de Level_UP! echarás en falta la típica función getFlag() que normalmente, tras realizar diferentes acciones para conseguir ser el owner del contrato, nos termina devolviendo la flag para superar el reto. Sin embargo en esta ocasión no disponemos de dicha función, por lo que tenemos que ver que otras opciones tenemos. Detallando las variables que se almacenan en el Storage tenemos:
- Una variable privada de tipo string llamada flag.
- Un variable pública de tipo uint llamada blocknumber.
- Una variable pública de tipo address llamada owner.
Esta última variable, owner, se fija en el momento del despliegue del contrato, a través del constructor, dándole el valor con la dirección del msg.sender. Además, la plataforma hace también una llamada a la función set_flag() tras desplegar el contrato para definir el valor de la flag dinámica que se genera desde el backend. Por ello, esta función set_flag() tiene un requisito que comprueba que es el propietario del contrato el que puede llamar a esta función.
Además de definir el valor de la flag (que se pasa como parámetro y se guardará en la variable flag del Storage), se define el valor de la variable blocknumber, que tendrá el valor del número de bloque actual. Y aquí es donde debemos fijarnos. Al ser una variable pública podremos acceder a dicho valor.
Podemos encontrar el valor en hexadecimal que, si lo pasamos a decimal, obtendremos el valor del bloque donde debemos buscar. En el ejemplo mostrado aparece el valor “0x027e”, que se corresponde con el valor 638. Vamos ahora a revisar que hay en dicho bloque. Para revisar el contenido del bloque podemos hacer uso de la API JSON-RPC que dispone la blockchain, concretamente haciendo una solicitud con método eth_getBlockByNumber:
curl -X POST --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber", "params":["0x027e", true],"id":1}' 127.0.0.1:7545
En este caso, como la blockchain se encuentra en un Ganache GUI en la misma máquina, sería posible revisar directamente la GUI para encontrar el bloque de una manera más sencilla aunque este método sólo es válido si tenemos nosotros el acceso al Ganache GUI.
En ambos ejemplo nos encontramos que hay una única transacción: 0xcc3abbedd9f63ef1d09c3f1b7a6b978917bc9970d36316c1476d8b23a9f4cca6. Incluso en la petición con cURL nos da la información directamente del input de la transacción, ya que la petición se hizo para que diera el detalle de cada una de las transacciones que se encuentran en el bloque:
0x42e22ff6000000000000000000000000000000000000000000000000000000000000002 00000000000000000000000000000000000000000000000000000000000000027323 23934383936343334313433363136383934303638393337373430313235373131373 138393300000000000000000000000000000000000000000000000000
Con esta información, en primer lugar, podemos averiguar el selector de la función. Hago uso de nuestra herramienta Open Source CrazyToolBox y compruebo el selector 0x42e22ff6 con la función selector decoder.
Pero lamentablemente el servicio 4byte.directory no tiene información sobre este selector, por lo que procedo a validar que la función set_flag() se corresponde con dicho selector haciendo uso del selector encoder.
Ahora sí, estamos seguros de que en esos datos es donde debemos buscar nuestra flag. Como en la función get_flag() sólo se pasa un parámetro (la flag) vamos a convertir los datos de hexadecimal a texto (ASCII).
¡Lo tenemos! Finalmente, nos queda validar nuestra flag (únicamente los números) interactuando con el contrato base y la función validateFlag() para obtener nuestros puntos, tal y como ya se ha realizado con anterioridad en el resto de retos.
Nuevo reto: Gas Knowledge
Este mes publicamos un nuevo reto relacionado con el gas en Ethereum, donde se repasa este concepto y tendrás que acelerar tus transacciones si quieres superar el reto. Se trata del reto número 17, con un nivel de 2 sobre 5 y que nos dará 75 puntos para sumar al resto de retos que ya tenemos validados. Recuerda reclamar tu NFT en la plataforma cada vez que puedas para demostrar tu nivel, ¿llegarás a ser el gran maestro?
Como siempre, esperamos que sigas disfrutando y aprendiendo con la plataforma Level_UP! y nos vemos el próximo mes con un nuevo reto, que pronto tendréis novedades para jugar en una testnet.
Figura 11: Libro dedicado a «Bitcoin: La tecnología Blockchain y su investigación» de Yaiza Rubio y Félix Brezo |
Seguiremos resolviendo retos y creando nuevos retos para el aprendizaje en seguridad en Web3 y recuerda que si quieres aprender de estas tecnologías, tienes Bit2Me Academy, que es una plataforma online para aprender de Web3, BitCoin, Tokenomics o Ethereum con cursos gratuitos además del libro dedicado a «Bitcoin: La tecnología Blockchain y su investigación» de Yaiza Rubio y Félix Brezo que seguro que te ayudan a ponerte las pilas.
Más artículos de Web3, Blockchain & SmartContracts
- Blockchain & SmartContracts: Una serie para aprender
- BlockChain & SmartContrats: Primer SmartContract con Solidity
- Blockchain & SmartContracts: Cómo probar y desplegar un SmartContract en Ethereum
- WWW, Web 1.0, Web 2.0, Web 3.0, Web3 y ¿Web 4.0?
- Metaverso, multiverso y las tierras digitales en que vivimos en forma de avatar
- Los Fan Tokens vs. las Criptomonedas y los NFTs: Level 101
- Tokenomics: Las criptomonedas y las «Proof-of-work»: Level 101
- Los NFTs y el registro mundial de los dueños de activos digitales en el Metaverso
- BitCoin: Blockchain y su investigación
- BlockChain & SmartContrats: El Internet descentralizado y el almacenamiento off-chain en IPFS
- Reentrancy Attack: Cómo te roban criptomonedas por un bug en tu SmartContract
- BlockChain & SmartContract: Bugs que pueden dejar tu SmartContrat «fuera de juego»
- Blockchain & SmartContracts: Patrones y buenas prácticas de seguridad
- Blockchain & SmartContracts: Herramientas de Auditoría de Seguridad de SmartContracts
- BlockChain & SmartContracts: Ataque de phishing a tx.origin y robo de criptomonedas
- BlockChain & SmartContracts: Ataques de Ice Phishing
- Blockchain & SmartContracts: Herramientas de análisis dinámico
- ZIION: Una distribución Linux para auditar SmartContracts (& BlockChain)
- Dominios Web3 en Etherenum Name Service y la trazabilizad de las transacciones Blockchain
- BlockChain & SmartContracts: Actualizar SmartContracts como los grandes protocolos
- Jumping level up (from) web2 (to) web3: Vulnerabilities & SCAMs – SmartContracts
- 20 millones (Euros) en Tokens de Optimism perdidos por no saber cómo funcionan los Wallets Multifirma
- BlockChain & SmartContracts: Cómo crear una DApp de la Web3 con Python (y Flask)
- Pentesting SmartContracts: From Web2.0 to Web3
- Tokenomics 101: Una explicación con gráficos
- Read-Only Reentrancy Attack: $220k robados y otros +$100M en riesgo
- Como utilizar ChatGPT para encontrar bugs en SmartContracts
- BlockChain & SmartContracts: Nuevas áreas profesionales relacionadas con la Web3
- Las voces de Satoshi: Un canal para estar al día en Web3, Blockchain, Criptos & IA
- BlockChain & SmartContracts: Nuevas áreas profesionales relacionadas con la Web3
- Bit2Me Academy: Una plataforma online para aprender de Web3, BitCoin, Tokenomics o Ethereum con cursos gratuitos
- Level_Up!: Una plataforma para aprender a hacer pentesting en Web3 (SmartContracts & BlockChain ) a través de retos hacking
- Level_Up!: Web3 Security WarGames para los amantes del Challenge Based Learning
- Level_up!: WriteUp del Reto Questions para comenzar el pentesting en la Web3
- Level_Up! Deny_to_me Challenge activado en la plataforma Level_up! de retos hacking Web3
- Level_Up!: WriteUp del Ownership Challenge para hacer pentesting en Web3
- Nuevo reto Hacking Web3 de Level_UP! -> Forensic Ouch!
- Level_Up!: WriteUp del reto «Safeguarding» para hacer pentesting en Web3
- Reto Web3 en Level_Up! «Replay_me»: La importancia de una correcta validación de firmas
- Level_Up! Configuración paso a paso de la plataforma de pentesting en Web3
- Level_Up! Consigue tus NFTs mientras cuando supera retos Web3
- Telefónica validará nodos de la cadena BlockChain de Celo
- Latch Web3: Un pestillo de seguridad para SmartContract
- Level_Up!: El WriteUp del reto «Origin» y un nuevo reto «Guess my number»
- CrazyToolBox: Una herramienta multifunción de utilidades Web3
- Level_Up!: El WriteUp del reto «ReLottery» y un nuevo reto de agosto llamado “Pay Me!”
- WriteUp: Reto Overworld y nuevo reto DEX Knowledge disponible en Level_Up!
- WriteUp del Reto Hacking Web3 Blockchain Tour & Nuevo Reto Gas Knowledge en Level_Up!
Powered by WPeMatico