1.漏洞简介https://twitter.com/BlockSecTeam/status/1628319536117153794https://twitter.com/BeosinAlert/status/16283016358344867842.相关地址或交易攻击交易1:http
https://twitter.com/BlockSecTeam/status/1628319536117153794 https://twitter.com/BeosinAlert/status/1628301635834486784
攻击交易1: https://bscscan.com/tx/0x7fa89d869fd1b89ee07c206c3c89d6169317b7de8b020edd42402d9895f0819e 攻击交易2: https://bscscan.com/tx/0xc09678fec49c643a30fc8e4dec36d0507dae7e9123c270e1f073d335deab6cf0 攻击合约:0xd360b416ce273ab2358419b1015acf476a3b30d9 攻击账号:0x0c925a25fdaac4460cab0cc7abc90ff71f410094 被攻击合约:StakingDYNA 0xa7b5eabc3ee82c585f5f4ccc26b81c3bd62ff3a9
整个攻击过程分为两部分: 1) 准备阶段: 0x7fa89d869fd1b89ee07c206c3c89d6169317b7de8b020edd42402d9895f0819e 攻击者准备大量账号,调用StakingDYNA. deposit存入少量 DYNA代币。
在deposit函数中,初次deposit的账号将会记录下当前block.timestamp,存储在stakeDetail.lastProcessAt中:
2) 攻击阶段: 0xc09678fec49c643a30fc8e4dec36d0507dae7e9123c270e1f073d335deab6cf0 攻击者通过闪电贷获取大量dyna代币,先通过上一步的合约调用StakingDYNA. deposit将代币存储在StakingDYNA合约中,再直接调用StakingDYNA. redeem取回利息。 在攻击者第二次deposit时,StakingDYNA合约并未更新时间戳,计算利息的时间差错误计算为redeem – deposit1,而实际上应该为 redeem – deposit2。因为攻击时deposit2与redeem在同一tx中,interest应该为0:
攻击准备tx时间:
实际攻击tx时间:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!