✅D31eg4t3
Idea
The challenge contract does delegatecall on address(msg.sender)
, which is user-controlled:
The other function uses the onlyOwner
modifier:
However, there is no way to bypass this thing:
But we can modify storage slots directly via the delegatecall. Recall that delegatecall is like calling a library function, the state changes are made in the caller's context instead of callee's.
PoC
Last updated