pragma solidity ^0.4.18; contract Reentrancy { mapping(address => uint) public balances; function withdraw(uint _amount) public { if(balances[msg.sender] >= _amount) { if(msg.sender.call.value(_amount)()) { // ==> Khai thác lỗ hổng Reentrancy tại đây: rút tiền khỏi tài khoản ngân hàng _amount; } balances[msg.sender] -= _amount; // ==> Trừ số tiền đã rút trong tài khoản. Nếu khai thác lỗi trên thành công, hàm này sẽ không bao giờ được thực thi. } } }
0.4.18