第八关:Vault
本关知识点:
合约中私有变量的读取
1. 题目要求
把locked状态变量设置为false
2. 代码功能解读
![请添加图片描述](https://img-blog.csdnimg.cn/7af1e3a0b6af4d748f2ca461cb29cc4b.png)
3. 漏洞分析
设置locked为false,那么我们就需要传入正确的密码来完成方法执行。
在区块链中所有数据都是公开透明的,所以我们可以通过槽位分析来得到password的变量。
4. 攻击方法
使用web3的getStorageAt方法来查看slot中的数据。
web3.eth.getStorageAt("合约实例地址", 1) ;
5. 攻击调用图
![请添加图片描述](https://img-blog.csdnimg.cn/031085b29fd7453da715252fc04f2026.png)
6. 知识点分析
在区块链中所有的状态变量都是可读的,我们可以通过计算槽位,得到具体的状态变量数据。