Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions client/src/gamedata/es/descriptions/levels/bet_house.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Bienvenido a la Casa de Apuestas.

Empiezas con 5 Pool Deposit Tokens (PDT).

¿Podrás dominar el arte de las apuestas estratégicas y convertirte en un apostador?
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
¡Felicidades!!! Has aprendido una lección crucial: nunca apuestes por llamadas externas aparentemente inofensivas.

Asume siempre que el receptor de los fondos puede ser otro contrato, y que dejar los contratos en un estado inconsistente podría arruinar la lógica, incluso si la función está protegida.

La reentrada tiene muchas caras y siempre debes estar preparado para ella. ¡Que no te superen en la apuesta!
5 changes: 5 additions & 0 deletions client/src/gamedata/es/descriptions/levels/cashback.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Acabas de unirte a Cashback, el cripto neobanco más popular del momento. Su propuesta es irresistible: por cada pago *on-chain* que realices, ganas puntos. Acumula los suficientes y alcanzarás el estatus legendario, desbloqueando la codiciada insignia NFT Super Cashback.

El sistema utiliza el EIP-7702 para permitir que las EOAs acumulen cashback. Los usuarios deben delegar al contrato Cashback para usar la función `payWithCashback`.

Se rumorea que existe una puerta trasera para usuarios avanzados. Tu misión es sencilla: conviértete en la pesadilla del programa de fidelidad. Maximiza tu cashback en todas las monedas soportadas y llévate al menos dos NFT Super Cashback, uno de los cuales debe corresponder a tu dirección de jugador.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Las suposiciones sobre la identidad, el contexto de ejecución de la cuenta y la localidad del almacenamiento son tan explotables como los bugs aritméticos cuando se trata de sistemas complejos basados en el EIP-7702. Encontraste los límites y sacaste provecho. ¡Buen trabajo!
11 changes: 11 additions & 0 deletions client/src/gamedata/es/descriptions/levels/elliptic_token.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
BOB creó y es propietario de un nuevo token ERC20 con un sistema de canje de cupones firmados basado en curvas elípticas llamado EllipticToken ($ETK). Bob puede crear cupones off-chain que luego pueden ser canjeados on-chain por $ETK. El contrato también incluye un sistema de permisos basado en firmas de curvas elípticas.

Bob es un desarrollador perezoso y "optimizó" algunos pasos del algoritmo ECDSA. ¿Puedes encontrar la falla?

Tu objetivo es robar los tokens $ETK que ALICE (`0xA11CE84AcB91Ac59B0A4E2945C9157eF3Ab17D4e`) acaba de canjear.

Cosas que podrían ayudar:

- Busca cualquier paso que falte en el [Algoritmo de Firma Digital de Curva Elíptica (ECDSA)](https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm).

Buena suerte. Las curvas elípticas no perdonan la confusión de dominios.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
¡Felicitaciones! ¡Has desbloqueado otro secreto de las firmas de curva elíptica!

Para que la verificación siga siendo segura, los datos que firmas deben ser hasheados primero. De lo contrario, es posible forjar firmas válidas sobre mensajes aleatorios que recuperen direcciones específicas.
11 changes: 11 additions & 0 deletions client/src/gamedata/es/descriptions/levels/forger.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Este es el Forger, la máquina de imprimir tokens sobre la que tu mamá te advirtió.

Este ERC-20 reparte pases de minteo firmados por el owner... o eso dicen.

Ya existe una firma dorada, válida por 100 tokens brillantes.

El equipo insiste en que el pase es de un solo uso y perfectamente seguro.

¿Tu objetivo? Lograr que el suministro total (total supply) supere los 100 tokens.

Ponte creativo, mantente alerta y que tus falsificaciones sean legendarias.
8 changes: 8 additions & 0 deletions client/src/gamedata/es/descriptions/levels/forger_complete.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Has demostrado por qué almacenar firmas en crudo no es suficiente: pueden eludir los controles mediante ataques de repetición (replays) o codificaciones alternativas.

La ruta más segura es utilizar un sistema de nonces para vincular cada minteo a una acción única.
Esto garantiza que cada firma solo se pueda gastar una vez, sin importar cómo esté codificada.

¿Las firmas cortas del EIP-2098? Manéjalas con cuidado, normalízalas antes de confiar en ellas.

¡Felicitaciones, has dominado el arte de no ser falsificado! 🔐
7 changes: 7 additions & 0 deletions client/src/gamedata/es/descriptions/levels/higherorder.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Imaginate un mundo donde las reglas están hechas para romperse, y solo los astutos y los audaces pueden ascender al poder. Bienvenidos a la Higher Order, un grupo envuelto en misterio, donde un tesoro aguarda y un Commander reina supremo.

¡Tu objetivo es convertirte en el Commander** de la Higher Order! ¡Buena suerte!

##### Cosas que podrían ayudar:
* A veces, no se puede confiar en el `calldata`.
* Los compiladores están evolucionando constantemente hacia mejores naves espaciales.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Has conquistado el desafío Higher Order, dominando el exploit de los Dirty Higher Order Bits para reclamar el título de Commander. En esta misión, has profundizado en Solidity, aprendiendo a manipular bytes y a evadir las validaciones de tipos de las funciones.

Tu victoria no solo demuestra tu destreza técnica, sino que también resalta tu capacidad para pensar de manera creativa y crítica.
1 change: 1 addition & 0 deletions client/src/gamedata/es/descriptions/levels/impersonator.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
El nuevo producto de SlockDotIt, **ECLocker**, integra cerraduras de puertas IoT con contratos inteligentes en Solidity, utilizando firmas ECDSA de Ethereum para la autorización. Cuando se envía una firma válida a la cerradura, el sistema emite un evento `Open`, abriendo las puertas para el controller autorizado. SlockDotIt te ha contratado para evaluar la seguridad de este producto antes de su lanzamiento. ¿Puedes comprometer el sistema de tal manera que cualquiera pueda abrir la puerta?
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
¡Felicitaciones! ¡Has descubierto con éxito los secretos de las firmas de curva elíptica!

Como se describe en la [EIP-2](https://eips.ethereum.org/EIPS/eip-2), permitir valores de `0 < s < secp256k1n` en nuestra lógica de verificación, como ocurre actualmente, abre una vulnerabilidad de maleabilidad de firmas. Alguien puede tomar cualquier firma, invertir el valor de `s` de `s` a `secp256k1n - s`, cambiar el valor de `v` (27 -> 28, 28 -> 27), y la firma resultante seguiría recuperando al mismo firmante.

Es importante usar implementaciones seguras a menos que sepas exactamente lo que estás haciendo. Revisa la [implementación de OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/448efeea6640bbbc09373f03fbc9c88e280147ba/contracts/utils/cryptography/ECDSA.sol#L128-L154) para aprender cómo usar ecrecover de manera segura.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
El objetivo de este nivel es que robes todos los fondos del contrato.


Cosas que podrían ayudar:

* Observa con atención las 2 firmas que el propietario del contrato utilizó para bloquearlo y establecer el administrador.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
¡Felicitaciones! ¡Has desbloqueado con éxito otro secreto de las firmas de curva elíptica!

Es muy importante no reutilizar nunca el mismo nonce para dos firmas. [RFC6979](https://datatracker.ietf.org/doc/html/rfc6979) define un procedimiento determinista de generación de firmas digitales que elimina los riesgos de reutilizar dos veces el mismo nonce.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Bienvenido, querido Anon, al Carrusel Mágico, donde las criaturas giran y dan vueltas bajo un hechizo sin fin. En esta mágica e infinita rueda digital, giran en bucle y dan vueltas con un entusiasmo encantador.

Agrega una criatura para que se una a la diversión, pero respeta la regla, o el juego terminará.
Si un animal se suma al paseo, ten cuidado: cuando vuelvas a revisar, ¡ese mismo animal debe seguir ahí!

¿Puedes romper la regla mágica del carrusel?
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
¡Felicitaciones, has roto la regla mágica del carrusel! En el ámbito de la manipulación de datos a bajo nivel, es crucial recordar los detalles, especialmente cuando se trabaja con el empaquetado de datos en los slots de almacenamiento.
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
Este portal depende de una compleja cadena de pruebas criptográficas para verificar mensajes cross-chain. Afirma ser seguro contra transiciones de estado inválidas, pero la brecha entre la verificación y la ejecución podría ser más amplia de lo que parece.

¿Puedes arreglártelas para mintear algunos tokens para tu wallet?

Cosas que podrían ayudar:

* Entender los selectores de función (Function Selectors).
* El patrón Checks-Effects-Interactions (CEI).
* Merkle Patricia Tries y la codificación RLP.

Consejos:

* A veces, los datos que verificas no son exactamente los mismos datos que ejecutas.
* Si un ciclo de hashes parece imposible de resolver, busca una manera de romper el bucle.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
**No implementado para no revelar la solución**
13 changes: 13 additions & 0 deletions client/src/gamedata/es/descriptions/levels/stake.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Stake es seguro para hacer staking de ETH nativo y del ERC20 WETH, considerando el mismo valor 1:1 de los tokens. ¿Puedes vaciar el contrato?

Para completar este nivel, el estado del contrato debe cumplir las siguientes condiciones:

- El balance de ETH del contrato `Stake` tiene que ser mayor que 0.
- `totalStaked` debe ser mayor que el balance de ETH del contrato `Stake`.
- Debes ser un staker.
- Tu balance en stake debe ser 0.

Cosas que podrían ser útiles:

- La especificación [ERC-20](https://github.com/ethereum/ercs/blob/master/ERCS/erc-20.md).
- Los [contratos de OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts).
5 changes: 5 additions & 0 deletions client/src/gamedata/es/descriptions/levels/stake_complete.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
¡Felicitaciones, has vulnerado la máquina `Stake`!

Al realizar llamadas de bajo nivel a contratos externos, es importante validar correctamente los valores de retorno para determinar si la llamada se revirtió.

Para más información, revisa el requisito [EEA EthTrust [S] Check External Calls Return](https://entethalliance.github.io/eta-registry/security-levels-spec.html#req-1-check-return), y usa siempre [SafeERC20](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol) al interactuar con tokens ERC-20 externos.
13 changes: 13 additions & 0 deletions client/src/gamedata/es/descriptions/levels/uniquenft.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Bienvenido a UniqueNFT, donde cualquier usuario puede obtener su propia y brillante insignia digital.

¿Humanos con EOAs? Mintean gratis, sin hacer preguntas. ¡Proof of Humanity al poder!

¿Contratos inteligentes? Lo siento bots, a pagar peaje –> ¡un ether entero!

Pero aquí está el truco: una insignia por dirección, no se permite la acumulación codiciosa.

Y olvídate de intercambiarlos, estas cosas se adhieren como pegamento.

Son como tatuajes en la blockchain: una vez que es tuyo, es tuyo para siempre.

¿Crees que puedes burlar las reglas y poseer más de un solo NFT? Demuéstralo.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
¿Pensaste que `tx.origin == msg.sender` te salvaría de las llamadas de contratos inteligentes? Ya no.

Con el EIP-7702, una EOA puede adoptar un comportamiento similar al de un contrato, delegar llamadas y eludir esa vieja validación. La suposición de que las EOAs no pueden reentrar en una función es ahora más peligrosa que nunca.

Al hacer reentrada en `mintNFTEOA` desde el callback `onERC721Received`, puedes mintear tantos NFT como quieras. De repente, una sola insignia no es el límite, es solo el comienzo.
Loading