ReentrancyAttack
合约重入攻击概念在以太坊中,智能合约能够调用其他外部合约的代码,由于智能合约可以调用外部合约或者发送以太币,这些操作需要合约提交外部的调用,所以这些合约外部的调用就可以被攻击者利用造成攻击劫持,使得被攻击合约在任意位置重新执行,绕过原代码中的限制条件,从而发生重入攻击。重入攻击本质上与编程里的递归调用类似,所以当合约将以太币发送到未知地址时就可能会发生。
漏洞原理概述合约重入攻击是代码中对用户(attacker)的合约请求进行调用,没有进行二次验证,然后可以使attacker修改合约状态,改变账本.从而实现多重提币操作。
简例代码对于A,B账户
12345withdraw(){ check balance >0 send Ether balance=0}
123456fallback(){ A.withdrwa()} attack(){ A.withdraw()}
attack()调用A中withdraw() 进行检查 发送
A合约向B合约发送ETH时,出发B合约fallback()函数,那么重新调用取款 ...
