Introduction AES (“Advanced Encryption Standard”) est un chiffrement symétrique par blocs. En effet, il repose sur le chiffrement de données découpées en plusieurs partie. Ainsi il en existe plusieurs modes : ECB CBC CFB OFB CTR CTS … Aujourd’hui , nous allons voir une attaque présente sur l’AES en mode CBC . Comprendre le mode CBC Comme présenté avant, CBC est un mode de chiffrement d’AES . CBC pour Chain By Chain Tout son fonctionnement peut être résumé dans le schéma suivant:
Eyes Closed | Hackrocks & HackArmour CTF 2022 Necessaires Netcat Python3 (+ pwntool) Flag flag{br0p0p0p0p0_with_f0rm4t_$7ringggg} Solution détaillée Le but du challenge est d’exploiter une format string puis d’utiliser un buffer overflow pour ainsi construire une ropchain et ainsi pouvoir prendre le contrôle du binaire grâce à une attaque ret2libc. Un peu d’explication : La méthode finale est la même que dans un de mes précédents article . Ce Writeup va donc se focaliser sur la partie Blind du challenge ainsi que l’exploitation des formats strings
Factor Master | Tjctf 2022 Fichier(s) Challenge files Necessaires Python3 + Pwntools Flag tjctf{S0_y0u_r34lly_c4n_F4c7t0r_4ny7th1nG_c36f63cfe73c} Solution détaillée Le challenge se décompose en 3 parties : 3 fois le serveur va nous fournir un nombre et nous allons devoir le factoriser en 2 produits de nombres premiers ; à la manière d’un chiffrement RSA. Commencons directement avec la première étape: Etape 1 : def challenge1(): p = getPrime(44) q = getPrime(1024) n = p * q return [p, q], n On remarque tous de suite de p est bien plus petit que q .
Vacation2 | Tjctf 2022 Fichier(s) Challenge files Necessaires Netcat Python3 (+ pwntool) Flag tjctf{w3_g0_wher3_w3_w4nt_t0!_66f7020620e343ff} Solution détaillée Le but du challenge est d’exploiter un buffer overflow pour ainsi construire une ropchain et ainsi pouvoir prendre le contrôle du binaire grâce à une attaque ret2libc. Un peu d’explication : Voici la source du challenge : #include <stdio.h>#include <stdlib.h> void vacation() { char buf[16]; puts("Where am I going today?
Fichier(s) Lucky Lucky.c Nécessaires Python3 (+ pwntool) Flag gigem{un1n1t14l1z3d_m3m0ry_15_r4nd0m_r1ght} Solution détaillée Le but du challenge est de sauter dans une fonction Win qui fait pop le flag : void win() { char flag[64] = {0}; FILE* f = fopen("flag.txt", "r"); fread(flag, 1, sizeof(flag), f); printf("Nice work! Here's the flag: %s\n", flag); } Malheureusement , un ret2win semble difficile à cause de :
Fichier(s) Chall.py Flag_enc Nécessaires Python3 Flag CTF{267a4401ea64e7167168969743dcc708399e3823d40e4ae37c78d675e281cb14} Description Hello friends. Just a regular algorithm Flag format: CTF{sha256(message_decrypt)} Solution détaillée Dans Flag_enc on retrouve le flag chiffré : 242712673639869973827786401934639193473972235217215301 Analysons le chiffrement dans chall.py : flag = ' [test]' hflag = flag.encode('hex') iflag = int(hflag[2:], 16) def polinom(n, m): i = 0 z = [] s = 0 while n > 0: if n % 2 !
Fichier(s) Herald.apk Nécessaires Un téléphone Android Apk-signer Apktool Jdax Flag INS{Y0u_Kn0W_aB0uT_Th3_Her4ld_0F_the_G0ds?} Description Our lab administrator has just passed out from a strange virus. Please help us find the password to his messaging app so we can identify what he was working on and save his life. Solution détaillée La première chose que j’ai faite et de mettre mon fichier apk dans Jdax pour voir le code source est commencé à reverse :
Fichier(s) Android App Nécessaires Ghidra Python3 Jdax Apktool Flag HL{J4v4.nativ3.d0.n0t.c4r3} Solution détaillée La première chose est de décompiler l’apk pour en retrouver le code Java . J’ai utilisé Apktool pour extraire le code smali et avoir tous les fichiers natifs : apktool d CrackMe.apk Puis j’ai passé l’apk dans Jadx, un outil très utilisé pour le reverse de code Java : J’ai installé l’apk sur mon appareil après avoir vérifié l’absence de virus et voici la page d’accueil :
Unknown 2 | GrabCon CTF 2021 Fichier(s) Crackity.jar Nécessaires jd-gui Python3 Flag TFCCTF{j4v4_0bfusc4t10n_1s_pr3tty_n0t_pr3tty} Solution détaillée La solution n’est pas très longue mais elle permet d’introduire le reverse de fichier .jar avec un exemple assez basique. Nous avons donc un fichier java à reverse pour trouver le Flag. J’ai d’abord essayé d’exécuter le fichier mais il semble cassé, et je ne peux le lancer. root@DESKTOP-HNQJECB: /c ➜ java crackity.
TweetyBirb | KillerQueen 2021 Fichier(s) Tweetybirb Necessaires Netcat Python3 (+ pwntool) Flag kqctf{tweet_tweet_did_you_leak_or_bruteforce_..._plz_dont_say_you_tried_bruteforce} Solution détaillée Le but du challenge est de contourner une protection anti-smashing du binaire : Canary Nous devons d’abord voir si un BOF est possible. Ici il n’y a que 2 input donc sans grande surprise, on trouve notre point d’entré : Le but est de faire leak la protection Canary dans le premier input pour ensuite exploiter un Buffer Over Flow dans le second.