FCSC 2021 - Intro - Rituel du Boutisme

Table des matières :

Votre rituel continue avec le boutisme ! Recherchez le flag dans le fichier ci-joint à l’aide des ressources présentes.

disque.img (480MB) : https://files.france-cybersecurity-challenge.fr/dl/rituel_du_boutisme/disque.img.7z

SHA256(disque.img) = 154a485279c2b7d2740d53a88b333f3ab9258ac3c3695a7d0d7b75d582803c93.

Fichiers joints :


Résolution

Nous avons ici une image disque, prête pour une analyse forensics. Bien entendu nous pourrions faire une analyse poussée du disque, mais il est utile de commencer par utiliser la fonction strings, elle peut apporter bien des informations.

Ici, un simple strings -a disque.img | grep FCSC ne trouve le flag. Nous ne le trouvons pas car l’encoding n’est pas le bon. En effet la commande strings supporte différents encodings :

$ strings -h
Usage: strings [option(s)] [file(s)]
 Display printable strings in [file(s)] (stdin by default)
 The options are:
  -a - --all                Scan the entire file, not just the data section [default]
  -d --data                 Only scan the data sections in the file
  -f --print-file-name      Print the name of the file before each string
  -n --bytes=[number]       Locate & print any NUL-terminated sequence of at
  -<number>                   least [number] characters (default 4).
  -t --radix={o,d,x}        Print the location of the string in base 8, 10 or 16
  -w --include-all-whitespace Include all whitespace as valid string characters
  -o                        An alias for --radix=o
  -T --target=<BFDNAME>     Specify the binary file format
  -e --encoding={s,S,b,l,B,L} Select character size and endianness:
                            s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit
  -s --output-separator=<string> String used to separate strings in output.
  @<file>                   Read options from <file>
  -h --help                 Display this information
  -v -V --version           Print the program's version number
strings: supported targets: elf64-x86-64 elf32-i386 elf32-iamcu elf32-x86-64 pei-i386 pei-x86-64 elf64-l1om elf64-k1om elf64-little elf64-big elf32-little elf32-big pe-x86-64 pe-bigobj-x86-64 pe-i386 srec symbolsrec verilog tekhex binary ihex plugin
Report bugs to <http://www.sourceware.org/bugzilla/>

Les encodings supportés par strings sont les suivants :

  • s = 7-bit
  • S = 8-bit
  • b = 16-bit big-endian
  • l = 16-bit little-endian
  • B = 32-bit big-endian
  • L = 32-bit little-endian

Dans le doute, nous les essayons tous avec une boucle for :

$ for e in s S b l B L; do strings -e $e ewf1 | grep FCSC; done
FCSC{6a8024a83d9ec2d1a9c36c51d0408f15836a043ae0431626987ce2b8960a5937}
FCSC{6a8024a83d9ec2d1a9c36c51d0408f15836a043ae0431626987ce2b8960a5937}

Et nous obtenons le flag :

FCSC{6a8024a83d9ec2d1a9c36c51d0408f15836a043ae0431626987ce2b8960a5937}