FCSC 2021 - Intro - Rituel du Boutisme
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-bitS
= 8-bitb
= 16-bit big-endianl
= 16-bit little-endianB
= 32-bit big-endianL
= 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}