Ethereum bytecode is immutable once it’s deployed. It will do exactly what it’s programmed to do. There is no way to alter it. This is what allows for permissionless decentralized applications on Ethereum.
In this CTF, we are actually going to debunk this myth. We are going to make Ethereum bytecode mutable. In the following 3 tasks, you will make the bytecode behave differently from what it's programmed to do.
Here is what you will learn by the end of this CTF:
- How to change a contract's private storage without its permission
- How to execute code on-chain without leaving a trace
- How to deploy 2 different contracts to the same exact address
- How to change the bytecode of a deployed contract
Isn't this magic?