Ethernaut — Level 14— Gatekeeper Two
This challenge is an extension to the previous level, the challenge covers a bit of assembly basics and other solidity programming concepts.
Click here to access the source code.
To complete the challenge we need to pass three gates
gateThree which are modifiers and get the
entrant role. Investigate the require statement of each modifier and pass a value to pass all the gates.
As seen in the previous challenge, just by making a call to the deployed via our malicious contract we pass the Gate 1. i.e.,
msg.sender != tx.origin
extcodesize is used to find out if the
msg.sender is an EOA or a contract but there is small hack to bypass the check. If
extcodesize executes within the constructor of a small contract, the return value is
A XOR B=C == A XOR C=B Interchanging the positions of the B and C yields the same result.
abi.encodeWithSignature helps call a function present on some other contract without the need to actually import the interface.
Thanks for Reading!