付费视频,请购买课程( ¥2,000.00 )后再观看
VibeCoding: 合约挑战 - Delegatecall重入清空金库
15次播放
21小时前
视频 AI 总结:
本视频详细讲解了一个智能合约挑战作业的解题思路,核心内容是利用Delegatecall漏洞和重入攻击来清空目标合约(Vault)中的所有资金。通过分析合约结构和执行流程,揭示了如何绕过权限控制,最终实现资金盗取,从而满足挑战的isSolved条件。
关键信息:
- 合约架构:存在一个用户交互合约(Vault)和一个逻辑实现合约,Vault合约通过
Delegatecall委托调用逻辑合约。 - 攻击目标:将Vault合约的余额清零。
Delegatecall漏洞利用:ChangeOwner函数在Vault合约上下文中执行时,其密码验证实际上是检查Vault合约的slot 1,即逻辑合约的地址。攻击者可将逻辑合约地址作为密码,修改Vault合约的Owner。- 攻击步骤:
- 利用逻辑合约地址作为密码,调用
ChangeOwner将Vault合约的Owner修改为攻击者地址。 - 以攻击者身份调用
Open Withdrawal,打开取款开关。 - 调用
Withdrawal函数,并利用重入攻击机制,在一次取款操作中多次执行取款逻辑,清空合约内所有资金。
- 利用逻辑合约地址作为密码,调用
- 涉及技术:
Delegatecall机制、Solidity存储槽位(slot)原理、重入攻击。