付费视频,请购买课程( ¥2,000.00 )后再观看

VibeCoding: 合约挑战 - Delegatecall重入清空金库

15次播放
17小时前

视频 AI 总结: 本视频详细讲解了一个智能合约挑战作业的解题思路,核心内容是利用Delegatecall漏洞和重入攻击来清空目标合约(Vault)中的所有资金。通过分析合约结构和执行流程,揭示了如何绕过权限控制,最终实现资金盗取,从而满足挑战的isSolved条件。

关键信息:

  1. 合约架构:存在一个用户交互合约(Vault)和一个逻辑实现合约,Vault合约通过Delegatecall委托调用逻辑合约。
  2. 攻击目标:将Vault合约的余额清零。
  3. Delegatecall漏洞利用ChangeOwner函数在Vault合约上下文中执行时,其密码验证实际上是检查Vault合约的slot 1,即逻辑合约的地址。攻击者可将逻辑合约地址作为密码,修改Vault合约的Owner。
  4. 攻击步骤
    • 利用逻辑合约地址作为密码,调用ChangeOwner将Vault合约的Owner修改为攻击者地址。
    • 以攻击者身份调用Open Withdrawal,打开取款开关。
    • 调用Withdrawal函数,并利用重入攻击机制,在一次取款操作中多次执行取款逻辑,清空合约内所有资金。
  5. 涉及技术Delegatecall机制、Solidity存储槽位(slot)原理、重入攻击。