Russian Roulette

Catégorie: Blockchain Difficulté: very-easy Flag: HTB{99%_0f_g4mbl3rs_quit_b4_bigwin}

Challenge

file-archive
1KB
circle-info

Description


Welcome to The Fray. This is a warm-up to test if you have what it takes to tackle the challenges of the realm. Are you brave enough?

circle-exclamation

Analyse du contrat

Le contrat possède une fonction publique qui permet de le détruire selon un nombre pseudo-aléatoire

ragma solidity 0.8.23;

contract RussianRoulette {

    constructor() payable {
        // i need more bullets
    }

    function pullTrigger() public returns (string memory) {
        if (uint256(blockhash(block.number - 1)) % 10 == 7) {
            selfdestruct(payable(msg.sender)); // 💀
        } else {
		return "im SAFU ... for now";
	    }
    }
}

Le flag n’est récupérable que si le contat RussianRoulette a balance vide. Donc l’objectif ici est d’appeler la fonction pullTrigger jusqu’à ce que le contrat soit détruit.


Script de résolution

Mis à jour