Site Tools


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

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
babyrev [2025/07/13 00:09] – created 86.247.56.28babyrev [2025/07/13 00:23] (current) 86.247.56.28
Line 1: Line 1:
-====== Analysis ======+====== babyRev ====== 
 + 
 +===== Analysis =====
  
 file nous dit que c'est un executable avec addresses dynamiques et avec les infos de debug file nous dit que c'est un executable avec addresses dynamiques et avec les infos de debug
Line 9: Line 11:
 ltrace nous montre un appel a strncmp ltrace nous montre un appel a strncmp
 {{:screenshot_2025-07-13_000902.png?nolink|}} {{:screenshot_2025-07-13_000902.png?nolink|}}
 +
 +on voit que ya un mapping fait sur l'input sur les characteres lowercase
 +{{:screenshot_2025-07-13_001043.png?nolink|}}
 +
 +===== Reverse =====
 +pour l'instant on a notre flag a comparer apres mapping
 +
 +<code>
 +L3AK{ngx_qkt_fgz_ugffq_uxtll_dt}
 +</code>
 +
 +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
 +
 +{{:screenshot_2025-07-13_001259.png?nolink|}}
 +
 +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
 +
 +{{:screenshot_2025-07-13_001429.png?nolink|}}
 +
 +si on la convertit en code ca donne un truc du genre
 +
 +<code c>
 +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';
 +}
 +</code>
 +
 +
 +sauf que nous on veut l'inverse donc
 +
 +<code c>
 +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';
 +}
 +</code>
 +
 +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
 +
 +{{:screenshot_2025-07-13_001959.png?nolink|}} 
 +
 +voila done
babyrev.1752358199.txt.gz · Last modified: by 86.247.56.28