Dao漏洞学习

Transaction 信息:https://etherscan.io/tx/0x0ec3f2488a93839524add10ea229e773f6bc891b4eb4794c3337d4495263790b
参考文章:
【1】https://learnblockchain.cn/article/644
【2】https://cloud.tencent.com/developer/article/1084243?from=15425
攻击执行流程:
1.建议拆分, 等到投票期(voting period)结束。(DAO.sol, newProposal)
2.执行拆分。(DAO.sol, splitDAO)
3.让DAO将新的DAO发送给它的代币。(splitDAO - > TokenCreation.sol, createTokenProxy)
4.确定DAO在更新你的余额之前尝试发送给你奖励, 但需在完成(3)之后。(splitDAO - > withdrawRewardFor - > ManagedAccount.sol, payOut)
5.当DAO执行(4)时, 让它再次运行splitDAO, 其参数与(2)中的相同(payOut - > _recipient.call.value - > _recipient())
6.DAO现在会向您发送更多子代币, 并在更新余额前提现您的奖励。(DAO.sol, splitDAO)
7.回到(5)!
8.调用transfer()发送Dao到下一个合约以便下一次攻击。
9.让DAO更新你的余额。因为它从来不会从(7)回到(5)

上一篇:docker学习(一)在centos7上安装与启动docker


下一篇:python在centos中安装虚拟环境并操作