-
-
[原创]Ethernaut智能合约代码审计题目writeup(1-4)
-
发表于: 2020-5-16 14:31 25634
-
通关条件:
获得合约的所有权
把余额减少成 0
思路:首先贡献一点金额,来通过 require 触发 fallback 函数,来成为合约的所有者,然后 withdraw 函数转走合约中的所有钱
贡献金额 contract.contribute({value:1})
这个 1 代表 1 wei,是以太币最小的单位
查看一下合约中的余额 await getBalance(instance)
await contract.owner() 先看一下合约所有者
补充:
触发 fallback 函数的条件:
所以我们可以通过
await contract.sendTransaction({value: 1})
来发送触发 fallback 函数
这时候合约所有者就是我们了
现在我们已经是合约的所有者了,可以调用那个 withdraw 函数来提现了
一开始合约中有 0.000...00002
执行 contract.withdraw() 之后合约里没钱了
目标完成,提交,通过!
目标:获得合约所有权
先看一下一开始合约的所有者,直接调用 Fal1out() 函数,再看一下
猜硬币游戏
目标:连续猜对十次
首先获取一个实例,然后拿到合约的地址以及 consecutiveWins 的值
我们来考虑一下,应该怎么实现攻击,首先,我们已经知道他的算法是怎么样的了,而且它用来计算的东西我们同样可以找到,所以,我们完全可以先进行计算,把结果在给他发过去就好啦
exp 如下,把 exp 代码复制到 remix IDE 中,部署 exploit 合约(要用之前得到的那个合约地址)
这里也贴一下 SafeMath.sol
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2020-5-16 14:35
被yichen115编辑
,原因: 补充
赞赏
他的文章
- 对某款智能手表的分析与攻击 6564
- [原创][车联网安全]使用STM32开发板实战汽车UDS诊断 15017
- [分享]binwalk路径穿越导致RCE(CVE-2022-4510) 9984
- [原创]Hack-A-Sat 2020预选赛 beckley 13588
- [原创]一个BLE智能手环的分析 31562
看原图
赞赏
雪币:
留言: