Damn Vulnerable Defi. Задача 1. Unstoppable
Работа с DVD немного отличается от Ethernaut. Здесь предлагается решать задачи в вашем редакторе кода, используя hardhat тесты. Да, конечно, можно продолжать все делать в Ремиксе и писать контракты, но давайте немного попрактикуемся с HH.
Для начала нужно немного подготовиться.
1. Скачать в папку DVD с GitHub отсюда;
2. Затем в консоли ввести git checkout v2.2.0, чтобы проверить последнюю версию;
3. После установить все зависимости с yarn install;
Все решения задач нам нужно будет писать в js файлах в папке test. Когда решение будет готово, то в консоли прописываем yarn run challenge-name, чтобы пройти тест. Решение правильное, если все тесты будут пройдены.
В чем суть первой задачи?
Предлагается вывести из строя быстрые займы.
Просмотрев контракты, мы можем найти функцию flashLoan() с уязвимой проверкой: assert(poolBalance == balanceBefore), на что и намекает подсказка в файле.
Следовательно, если мы сможем пополнить баланс контракта, не используя функцию depositTokens(), мы нарушим проверку assert() и заблокируем контракт.
В поле для решения задачи нужно прописать всего одну строку:
await this.token.connect(attacker).transfer(this.pool.address, "12");
После запускаем тест yarn run unstoppable и видим, что тест прошел удачно.
#dvd #DamnVulnerableDefi
Post #440
183