Damn Vulnerable DeFi - 4

Challenge #4 - Side Entrance

一个非常简单的池允许任何人存入 ETH,并在任何时间点取出它。

它已经有 1000 ETH 余额,并且正在使用存入的 ETH 提供免费闪电贷来推广他们的系统。

从余额 1 ETH 开始,通过从池中取出所有 ETH 来通过挑战。

这道题也是提供借贷,但是是通过调用我们的execute函数来给我们转账,这就为我们提供了编写攻击合约的思路,合约提供了三个函数deposit,withdraw和flashLoan,仔细观察,不难发现,flashLoan函数最后的判断是:

只要借贷后池子的余额和之前相同或大于即可,在deposit函数中:

我们会把钱发给合约,并且增加我们在balances映射中的值,这就代表我们可以把借出来的钱再存进合约,最后通过withdraw函数取得池子所有的钱。

这里我们选择编写新的合约

attack.sol:

在合约中构造execute函数,在借贷池向我们发钱时,我们把钱通过deposit函数存到池子中,最后取钱并发给我们自己。

side-entrance.challenge.js:

注意:不要忘记了receive收钱函数!

扫描二维码关注公众号,回复: 15105482 查看本文章

测试:

猜你喜欢

转载自blog.csdn.net/m0_52030813/article/details/129220280