October 1, 2023

Решение задач AMAZEX-DSS-PARIS. MagicETH

Вводные:

https://github.com/secureum/AMAZEX-DSS-PARIS/tree/main/src/1_MagicETH

Протокол был взломан и украдены 1000 mETH

Задачи:

- Вернуть украденые1000 mETH с кошелька exploiter.

- Конвертировать mETH в ETH.

Изучив код протокола, замечаем что на 35 строке допущена ошибка. Перепутаны местами адреса msg.sender и account.

Это значит что происходит проверка "Сколько токенов мы разрешили сжечь/перевести с account'а", а не он нам.

Так же мы видим в 39 строке, что уже нам дается approve на снятие токенов с accout'а

Воспользуемся данной уязвимостью что бы вернуть украденные токены.

  • Сами даем approve на 1000 mETH exploiter'у
  • Вызываем функцию burnFrom , что бы самим получить approve от exploiter'a
  • Переводим себе токены с адреса exploiter'a
  • Обмениваем mETH на нативный ETH используя функцию withdraw

Задача решена