
Esta es una implementación de Truffle de contratos inteligentes intencionalmente vulnerables, diseñada para permitir que aquellos interesados en la seguridad de contratos inteligentes exploten una amplia variedad de problemas en un entorno seguro.
¡Prueba tu suerte (o tus habilidades) en los distintos juegos del casino para ganar fabulosos tokens y premios!
Esto está en desarrollo, así que por ahora puede haber una cantidad decepcionante de juegos, pero hay más por venir y muchas cosas que explotar mientras tanto.
Instala las dependencias
sudo apt install npmsudo npm install -g truffle ganache-cliEjecuta ./start_challenge.sh para iniciar testrpc, desplegar el casino en tu testnet local y comenzar a simular a los otros jugadores
Revisa el código en el directorio contracts/ para encontrar vulnerabilidades
Crea scripts de prueba de concepto para obtener tantos CasinoTokens como puedas. (Mira los scripts de usuario simulados en el directorio exec/simuilated-users/ para hacerte una idea de cómo interactuar con los contratos si estás atascado)
GOATlib/GOATConfig.js y usar GOATConfig.accounts.attacker para todas tus llamadas. Sé que tienes acceso a las cuentas reales del propietario y a los otros jugadores, ya que está en testrpc, y no me impresiona tu script para recorrer las cuentas y llamar a transfer.GOATlib/: Librería con código utilizado por los distintos archivos JavaScript.build/: El directorio que Truffle crea cuando compila el proyecto. Contiene información sobre todos los contratos del proyecto, incluyendo el bytecode compilado y las direcciones de los contratos desplegados.contracts/: El código de los smart contracts.exec/simulated-users/: Scripts que controlan a los apostadores simulados que juegan los distintos juegos.exec/examples: Scripts de ejemplo a los que puedes recurrir al crear tus exploitsmigrations/: Scripts ejecutados por truffle para el despliegue. Se ejecutan en orden alfabético y pueden ofrecer información sobre cómo se inicializan los contratos y cómo encajan entre sí.Todos los juegos del GOATCasino usan un token compatible con ERC20, definido en el archivo CasinoToken.sol.
El CasinoToken hace uso de algunos contratos zeppelin ampliamente utilizados para implementar gran parte de las funcionalidades estándar de un token.
Puedes usar el contrato definido en CasinoExchange.sol para comprar y vender CasinoTokens a cambio de ether.
El archivo Faucet.sol define un contrato que se puede usar una vez por usuario para obtener un suministro gratuito de CasinoTokens y probar los juegos.
El contrato Vault.sol mantiene una reserva de fondos a disposición del propietario. Porciones iguales de los fondos de la bóveda están protegidas por métodos separados de control de acceso para proteger mejor los fondos si un método resulta insuficiente.
Finalmente, el único juego del casino por ahora es la lotería.
Los usuarios pueden comprar boletos por número del 0 al 255.
Cada minuto, un usuario puede activar la función checkWin para generar el número de boleto ganador, recompensar al ganador con el premio (menos la comisión de la casa) e iniciar una nueva ronda limpiando los boletos comprados.
Si nadie compró el boleto ganador, la ronda continúa por un minuto más de compras antes de que se pueda elegir un nuevo boleto ganador.