
Si tratta di una distribuzione Truffle di smart contract volutamente vulnerabile, pensata per consentire a chi è interessato alla sicurezza degli smart contract di sfruttare un'ampia gamma di vulnerabilità in un ambiente sicuro.
Metti alla prova la tua fortuna (o le tue abilità) nei vari giochi del casinò per vincere favolosi token e premi!
Questo progetto è in fase di sviluppo, quindi al momento potrebbe esserci una quantità deludente di giochi, ma altri arriveranno e nel frattempo ci sono molte cose da sfruttare.
Installa le dipendenze
sudo apt install npmsudo npm install -g truffle ganache-cliEsegui ./start_challenge.sh per avviare testrpc, distribuire il casinò sulla tua testnet locale e iniziare a simulare gli altri giocatori
Esamina il codice nella directory contracts/ per trovare vulnerabilità
Crea script proof of concept per ottenere più CasinoTokens possibile! (se sei bloccato, guarda gli script degli utenti simulati nella directory exec/simuilated-users/ per farti un'idea di come interagire con i contratti)
GOATlib/GOATConfig.js e usare GOATConfig.accounts.attacker per tutte le tue chiamate. So che hai accesso ai veri account proprietari e agli altri giocatori, dato che è su testrpc, e non sono impressionato dal tuo script che scorre gli account e chiama transfer.GOATlib/: Libreria con il codice usato dai vari file JavaScript.build/: La directory che Truffle crea quando compila il progetto. Contiene informazioni su tutti i contratti del progetto, inclusi il bytecode compilato e gli indirizzi dei contratti distribuiti.contracts/: Il codice degli smart contract.exec/simulated-users/: Script che controllano i giocatori simulati che partecipano ai vari giochi.exec/examples: Script di esempio a cui puoi fare riferimento quando crei i tuoi exploitmigrations/: script eseguiti da truffle per il deployment. Vengono eseguiti in ordine alfabetico e possono offrire informazioni su come i contratti vengono inizializzati e su come si incastrano tra loro.Tutti i giochi del GOATCasino usano un token conforme allo standard ERC20, definito nel file CasinoToken.sol.
Il CasinoToken fa uso di alcuni contratti zeppelin ampiamente utilizzati per implementare gran parte delle funzionalità standard di un token.
Puoi usare il contratto definito in CasinoExchange.sol per comprare e vendere CasinoTokens in cambio di ether.
Il file Faucet.sol definisce un contratto che può essere usato una volta per utente per ottenere una fornitura gratuita di CasinoTokens per provare i giochi.
Il contratto Vault.sol detiene una riserva di fondi a cui il proprietario può accedere. Porzioni uguali dei fondi del vault sono protette da metodi separati di controllo degli accessi, al fine di proteggere meglio i fondi se un metodo dovesse rivelarsi insufficiente.
Infine, l'unico gioco nel casinò al momento è la lotteria.
Gli utenti possono acquistare biglietti per numero da 0 a 255.
Ogni minuto, un utente può attivare la funzione checkWin per generare il numero del biglietto vincente, premiare il vincitore con il montepremi (meno la commissione della casa) e iniziare un nuovo round cancellando i biglietti acquistati.
Se nessuno ha acquistato il biglietto vincente, il round continua per un altro minuto di acquisti prima che possa essere scelto un nuovo biglietto vincente.