1 min read

[CTF GEMA] OverflowMe

CTF GEMA Groupe 2025

Niveau de Difficulté : Very-Easy

Catégorie du Challenge : Pwn

Description :

Un programme vulnérable vous attend… Mais que se passe-t-il si vous lui donnez trop de données ?
Saurez-vous exploiter cette faiblesse et obtenir le flag ?
Objectif : Exploitez un Buffer Overflow pour obtenir un accès privilégié !

Steps to Solve

D'après le code fournis :

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

void print_flag() {
    FILE *file = fopen("flag.txt", "r");  
    if (file == NULL) {
        puts("Flag introuvable ! Contacte l'admin.");
        return;
    }

    char flag[100];  
    fgets(flag, sizeof(flag), file);  
    fclose(file);
    
    printf("🎉 Bravo ! Voici ton flag : %s\n", flag);  
}

int main() {
    int secret = 0xdeadbeef;
    char name[100] = {0};

    read(0, name, 0x100); 

    if (secret == 0x1337) {
        print_flag();
    } else {
        puts("I guess you're not cool enough to see my secret");
    }
}

L'idée est de remplacer la valeur de la variable secret par 1337.

A l'aide de gdb :

Plaçons un breakpoint et inspectons le registre :

Il nous faut donc remplir notre buffer et remplacer la valeur indiquer :

FLAG: FLAG{Buff3r_0v3rFl0w_34$y}