Damn Vulnerable DeFi - 3

Challenge #3 - Truster

越来越多的借贷池提供闪电贷。在这种情况下,一个新的矿池已经启动,可以免费提供 DVT 代币的闪贷。

该池持有 100 万个 DVT 代币。你什么都没有。

要通过此挑战,请将所有令牌从池中取出。如果可能,在单个事务中。

这道题依然提供了flashLoan函数来借钱,但是在flashLoan中有这样一行代码:

我们可以通过构造data参数,对指定的方法进行调用

truster.challenge.js:

我们选择通过web3.eth.abi.encodeFunctionCall()方法来构造data,我这里选择通过yarn add下载web3-eth-abi包然后导入。

因为这里会检查借贷前后池子里的余额是否相同,所以我们不能直接调用transfer函数,但是我们可以调用approve函数,在借贷之后直接把池子中的钱转给我们。

具体关于web3.eth.abi.encodeFunctionCall()方法的使用可以参考:https://learnblockchain.cn/docs/web3.js/web3-eth-abi.html#encodefunctioncall

测试:

猜你喜欢

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