首页
社区
课程
招聘
[原创]Ethernaut智能合约代码审计题目writeup(1-4)
发表于: 2020-5-16 14:31 25634

[原创]Ethernaut智能合约代码审计题目writeup(1-4)

2020-5-16 14:31
25634


通关条件:

获得合约的所有权

把余额减少成 0


思路:首先贡献一点金额,来通过 require 触发 fallback 函数,来成为合约的所有者,然后 withdraw 函数转走合约中的所有钱


贡献金额  contract.contribute({value:1})

这个 1 代表 1 wei,是以太币最小的单位

查看一下合约中的余额  await getBalance(instance)


image.png


await contract.owner()  先看一下合约所有者

补充:

触发 fallback 函数的条件:

所以我们可以通过

await contract.sendTransaction({value: 1})

来发送触发 fallback 函数


这时候合约所有者就是我们了


image.png


现在我们已经是合约的所有者了,可以调用那个 withdraw 函数来提现了


一开始合约中有 0.000...00002

执行 contract.withdraw() 之后合约里没钱了


image.png


目标完成,提交,通过!


image.png



目标:获得合约所有权


先看一下一开始合约的所有者,直接调用 Fal1out() 函数,再看一下


image.png


image.png



猜硬币游戏

目标:连续猜对十次


首先获取一个实例,然后拿到合约的地址以及 consecutiveWins 的值


image.png


我们来考虑一下,应该怎么实现攻击,首先,我们已经知道他的算法是怎么样的了,而且它用来计算的东西我们同样可以找到,所以,我们完全可以先进行计算,把结果在给他发过去就好啦


exp 如下,把 exp 代码复制到 remix IDE 中,部署 exploit 合约(要用之前得到的那个合约地址)


这里也贴一下 SafeMath.sol


image.png


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2020-5-16 14:35 被yichen115编辑 ,原因: 补充
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//