August 2019
Intermediate to advanced
486 pages
13h 52m
English
Many hacks in the past have used this technique. In this attack technique, an attacker deploys a new contract and calls a specific function on the target contract. The call sends ether to the attacker's contract, and their contract makes a function call to the target contract again. This process continues in a loop until all the ether or funds from the target contract is drained in the attacker's contract.
Let's look at an example where a reentrancy attack is possible:
//Bad Practicefunction withdraw() public { uint amount = balances[msg.sender]; msg.sender.transfer(amount); balances[msg.sender] = 0;}
In the preceding code, using the withdraw() function, a user can withdraw their ether balance, which they have deposited ...