Ethernaut. Задача 7. Force
В этой задаче нам нужно пополнить баланс контракта.
Ссылка на задачу
В чем суть?
Даже если в контракте нет никаких функций для приема денег или вообще ничего нет, на него можно прислать деньги двумя способами:
1) Это перечисление награды за майнинг;
2) Вызов selfdestruct;
Вот простой пример контракта хакера:
contract Hack {
function destroy (address payable destr) external {
selfdestruct(destr);
}
receive() external payable{}
}
Он вызывает у себя функцию уничтожения, которая пересылает все деньги на адрес указанного контракта. receive() нужна для того чтобы изначально пополнить баланс нашего контракта.
Вообще пример с selfdestruct является одним из самых популярных методов атаки - Force feeding, о которой можно прочитать в предыдущих постах на канале.
#ethernaut
Post #391
215
- 👍 2