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
