Site Tools


Hotfix release available: 2025-05-14b "Librarian". upgrade now! [56.2] (what's this?)
babyrev

Table of Contents

babyRev

Analysis

file nous dit que c'est un executable avec addresses dynamiques et avec les infos de debug

strings nous donne un flag mais c'est probablement pas directement utilisable

ltrace nous montre un appel a strncmp

on voit que ya un mapping fait sur l'input sur les characteres lowercase

Reverse

pour l'instant on a notre flag a comparer apres mapping

L3AK{ngx_qkt_fgz_ugffq_uxtll_dt}

a partir de la on peut facilement extraire le mapping en lui passant une string de a-z en input

sinon on ouvre dans ghidra et on voit ce que ca donne

on voit sur ghidra que dans notre main on a un init remap, on va y jeter un coup d'oeil

dans le init_remap on a directement la table de mapping qu'on veut

si on la convertit en code ca donne un truc du genre

void init_remap(void) {
    for (int i = 0; i < 0x80; i++) {
        remap[i] = (char)i;
    }
    remap['a'] = 'q';
    remap['b'] = 'w';
    remap['c'] = 'e';
    remap['d'] = 'r';
    remap['e'] = 't';
    remap['f'] = 'y';
    remap['g'] = 'u';
    remap['h'] = 'i';
    remap['i'] = 'o';
    remap['j'] = 'p';
    remap['k'] = 'a';
    remap['l'] = 's';
    remap['m'] = 'd';
    remap['n'] = 'f';
    remap['o'] = 'g';
    remap['p'] = 'h';
    remap['q'] = 'j';
    remap['r'] = 'k';
    remap['s'] = 'l';
    remap['t'] = 'z';
    remap['u'] = 'x';
    remap['v'] = 'c';
    remap['w'] = 'v';
    remap['x'] = 'b';
    remap['y'] = 'n';
    remap['z'] = 'm';
}

sauf que nous on veut l'inverse donc

void init_reverse_remap(void) {
    for (int i = 0; i < 0x80; i++) {
        reverse_remap[i] = (char)i;
    }
    reverse_remap['q'] = 'a';
    reverse_remap['w'] = 'b';
    reverse_remap['e'] = 'c';
    reverse_remap['r'] = 'd';
    reverse_remap['t'] = 'e';
    reverse_remap['y'] = 'f';
    reverse_remap['u'] = 'g';
    reverse_remap['i'] = 'h';
    reverse_remap['o'] = 'i';
    reverse_remap['p'] = 'j';
    reverse_remap['a'] = 'k';
    reverse_remap['s'] = 'l';
    reverse_remap['d'] = 'm';
    reverse_remap['f'] = 'n';
    reverse_remap['g'] = 'o';
    reverse_remap['h'] = 'p';
    reverse_remap['j'] = 'q';
    reverse_remap['k'] = 'r';
    reverse_remap['l'] = 's';
    reverse_remap['z'] = 't';
    reverse_remap['x'] = 'u';
    reverse_remap['c'] = 'v';
    reverse_remap['v'] = 'w';
    reverse_remap['b'] = 'x';
    reverse_remap['n'] = 'y';
    reverse_remap['m'] = 'z';
}

reste plus qu'a faire un petit programme a la con pour passer le flag initial qu'on avait dans ce mapping et ca donne

voila done

babyrev.txt · Last modified: by 86.247.56.28