https://github.com/autistic-symposium/ethernaut-foundry-framework-solutions-sol
👾 my foundry framework and detailed solutions for each ethernaut level
https://github.com/autistic-symposium/ethernaut-foundry-framework-solutions-sol
autism blockchain blockchain-security cypherpunk ethernaut exploits foundry openzeppelin phishing-attacks pocs reentrancy security web3
Last synced: 3 months ago
JSON representation
👾 my foundry framework and detailed solutions for each ethernaut level
- Host: GitHub
- URL: https://github.com/autistic-symposium/ethernaut-foundry-framework-solutions-sol
- Owner: autistic-symposium
- Created: 2023-08-12T18:47:38.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-15T03:01:30.000Z (8 months ago)
- Last Synced: 2025-02-17T18:56:30.092Z (3 months ago)
- Topics: autism, blockchain, blockchain-security, cypherpunk, ethernaut, exploits, foundry, openzeppelin, phishing-attacks, pocs, reentrancy, security, web3
- Language: Solidity
- Homepage:
- Size: 193 KB
- Stars: 16
- Watchers: 1
- Forks: 4
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## 🧑🏻🚀 my foundry framework to solve ethernaut: write-ups + solutions
##### 🔋 this project contains solutions for **[openzeppelin's ethernaut wargames](https://ethernaut.openzeppelin.com/)**. leveraging **foundry**, each level has a test set (`test/*.t.sol`), a script set (`script/*.s.sol`), and a write-up. some levels also have an exploit at `src/*.sol`.
##### 🔋 to read the full notes about this work, check out my mirror publication: **[on hacking systematically with foundry](https://mirror.xyz/go-outside.eth)**. you are welcome to submit solutions and pull requests.
##### 🔋 by the way, do you remember overthewire? **[here is my WeChall profile from playing it in 2014](https://www.wechall.net/profile/bt3gl)**.
![]()
---
### levels
##### ✅ 01. Fallback - exploiting `fallback()`:
- **[write-up + foundry test](test/01)**
- **[submission foundry script](script/01/)**##### ✅ 02. Fallout - exploiting `constructor()`:
- **[write-up + foundry test](test/02)**
- **[submission foundry script](script/02/)**##### ✅ 03. Coin Flip - exploiting pseudo-randomness:
- **[write-up + foundry test](test/03)**
- **[solidity exploit](src/03)**
- **[submission foundry script](script/03/)**##### ✅ 04. Telephone - exploiting `tx.origin`:
- **[write-up + foundry test](test/04)**
- **[solidity exploit](src/04)**
- **[submission foundry script](script/04/)**##### ✅ 05. Token - exploiting integer overflows:
- **[write-up + foundry test](test/05)**
- **[submission foundry script](script/05/)**##### ✅ 06. Delegation - exploiting `delegatecall`:
- **[write-up + foundry test](test/06)**
- **[submission foundry script](script/06/)**##### ✅ 07. Force - exploiting payable contracts:
- **[write-up + foundry test](test/07)**
- **[solidity exploit](src/07)**
- **[submission foundry script](script/07/)**##### ✅ 08. Vault - exploiting private functions:
- **[write-up + foundry test](test/08)**
- **[submission foundry script](script/08/)**##### ✅ 09. King - exploiting `transfer(msg.value)`:
- **[write-up + foundry test](test/09)**
- **[solidity exploit](src/09)**
- **[submission foundry script](script/09/)**##### ✅ 10. Reentrancy - exploiting reentrancy:
- **[write-up + foundry test](test/10)**
- **[solidity exploit](src/10)**
- **[submission foundry script](script/10/)**
##### ✅ 11. Elevator - exploiting interfaces:
- **[write-up + foundry test](test/11)**
- **[solidity exploit](src/11/)**
- **[submission foundry script](script/11/)**##### 🔜 12. Privacy:
- **[write-up + foundry test](test/12)**
- **[submission foundry script](script/12/)**##### 🔜 13. Gatekeeper One:
- **[write-up + foundry test](test/13)**
- **[submission foundry script](script/13/)**##### 🔜 14. Gatekeeper Two:
- **[write-up + foundry test](test/14)**
- **[submission foundry script](script/14/)**##### 🔜 15. Naught Coin:
- **[write-up + foundry test](test/15)**
- **[submission foundry script](script/15/)**##### 🔜 16. Preservation:
- **[write-up + foundry test](test/16)**
- **[submission foundry script](script/16/)**##### 🔜 17. Recovery:
- **[write-up + foundry test](test/17)**
- **[submission foundry script](script/17/)**##### 🔜 18. Magic Number:
- **[write-up + foundry test](test/18)**
- **[submission foundry script](script/18/)**##### 🔜 19. Alien Code:
- **[write-up + foundry test](test/19)**
- **[submission foundry script](script/19/)**##### 🔜 20. Denial:
- **[write-up + foundry test](test/20)**
- **[submission foundry script](script/20/)**##### ✅ 21. Shop - exploiting interfaces II:
- **[write-up + foundry test](test/21)**
- **[solidity exploit](src/21)**
- **[submission foundry script](script/21/)**##### 🔜 22. Dex:
- **[write-up + foundry test](test/22)**
- **[solidity exploit](src/22/)**
- **[submission foundry script](script/22/)**##### 🔜 23. Dex Two:
- **[write-up + foundry test](test/23)**
- **[submission foundry script](script/23/)**##### 🔜 24. Puzzle Wallet:
- **[write-up + foundry test](test/24)**
- **[submission foundry script](script/24/)**##### 🔜 25. Motorbike:
- **[write-up + foundry test](test/25)**
- **[submission foundry script](script/25/)**##### 🔜 26. Doubly Entry Point:
- **[write-up + foundry test](test/26)**
- **[submission foundry script](script/26/)**##### 🔜 27. Good Samaritan:
- **[write-up + foundry test](test/27)**
- **[submission foundry script](script/27/)**##### 🔜 28. Gatekeeper Three:
- **[write-up + foundry test](test/28)**
- **[submission foundry script](script/28/)**##### 🔜 29. Switch:
- **[write-up + foundry test](test/29)**
- **[submission foundry script](script/29/)**
----
### installing
* install **[foundry](https://github.com/foundry-rs/foundry)**
* create a test wallet (*e.g.*, with metamask)
* create a `.env` (copying from `.env.example`) and add keys and the addresses of each instance.
* add a sepolia rpc url to `foundry.toml` (*e.g.*, from **[alchemy](https://www.alchemy.com/)** or **[infura](https://www.infura.io/)**)
---
### running each level
* you will find detailed instructions in each write-up, but as a general rule:
* run tests with, for example,
- `forge test -vvvv`, or, for example,
- `forge test -vvvv --match-path ./test/01/Fallback.t.sol`
* submit scripts with, for example,
- `forge script ./script/01/Fallback.s.sol --broadcast -vvvv --rpc-url sepolia`
----
###### (like solving these types of problems? perhaps you are [autistic cypherpunk](https://github.com/autistic-symposium/ethernaut-systematic-solutions-foundry-sol), then?)