CoinFilp
1. 题目要求
这是一个掷硬币的游戏,你需要连续的猜对结果。
完成这一关,你需要通过你的超能力来连续猜对十次。
2. 分析
2.1 tips: 参考视频
2.2
_guess = uint256(blockhash(block.number.sub(1))).div(FACTOR) == 1 ? true : false
2)我们知道不能flip()
在同一个块中调用多次;否则该功能将恢复。这意味着要通过挑战,我们至少需要猜对 11 个区块2.3 攻击合约:
1 | contract Hack { |
2.3 调用 10次 攻击合约的 flip() 函数 来改变 CoinFilp 合约中 consecutiveWins 的值
3. 解题
3.1 获取关卡的实例:0x2F3D37ae048f36c8B2674aB1a4B8D3Bab4B6B716
3.2 在remix中调用关卡合约
3.3 部署攻击合约
3.5 调用 11次 合约中filp() 函数
3.6 提交实例并查看结果
成功!!!