September 27, 2023

Решение задач Ethernaut. Fallback

Задача:

  1. нужно стать owner'ом контракта
  2. уменьшишь его баланс до 0

Изучив контракт мы видим что владение контракта предается в 2х местах помимо конструктора:

Передачу прав через contribute() отбрасываем, т.к для этого нам нужно отправить одновременно более 1000 эфиров и меньше 0.001 что бы пройти условие для прередачи прав, что не возможно.

Рассмотрим вариант через receive()

Нас ограничивает условие contribution > 0

Его можно пройти если сделать contribute() хотя бы на 1 wei

Создаем инстанс и копируем его адрес

Открываем remix.ethereum.org. Подключаемся к нужной сети через Injected Provider. Вставляем код контракта, адрес инстанса и жмем At Address что бы подключиться к контракту

Вводим 1 wei и нажимаем contribute.

Теперь мы можем пройти следующее условие

Что бы проверить это необходимо вставить свой адрес в следуюшее поле и нажать кнопку. Видим что у наш контрибьюшен равен 1

Для того что бы вызвать функцию receive() необходимо просто отправть эфир на адрес контракта.

Для этого снова вводим 1 Wei и жмем transact

Теперь мы являемся овнером. Что бы это проверит жмем owner. И видим свой адрес

Нажимаем Withdraw для того что бы опусташить контракт. Видим что баланс стал равен 0

Возвращаемся на сайт эзернаута и отправляем инстанс на проверку

ПОЗДРАВЛЯЮ! Уровень пройден!