QuickScan

Catégorie: Reverse Difficulté: medium Flag: HTB{y0u_4n4lyz3d_th3_p4tt3ns!}

Challenge

circle-info

Description


QuickScan is a Medium reversing challenge. Players will be sent a series of small, randomly generated ELF files and must rapidly and automatically anlalyse them in order to extract required data.

circle-exclamation

Explications

On peut s’amuser à enregistrer 2-3 ELF que le serveur nous donne. On s’aperçoit rapidement d’un pattern : bien que la fonction entry change de position à chaque fois, elle reste toujours la même dans ses instructions et l’adresse où se trouve les données attendues est mise dans RSI grâce à l’instruction LEA

Ici les données attendues par le serveur sont à l’adresse 0x08048104

Ce qui est important c’est la valeur en vert dans l’instruction LEA, il s’agit de l’offset utilisé pour trouver l’adresse de nos données. Ici c’est 0xfffffdb9 (on est en little endian) ce qui nous donne -583 (cette valeur est signée)

Actuellement le LEA est à l’adresse 0x08048344 et la prochaine instruction est 7 bytes plus loin, soit 0x0804834b

Donc si l’on fait 0x0804834b - 583 on tombe bien sur 0x08048104, c’est à dire les données à récupérer.

En résumé, il faut :

  1. Trouver l’adresse d’entry dans notre binaire

  2. Récupérer l’offset à adresse(entry) + 7

  3. Calculer adresse(entry) + 11 + offset

  4. Lire les 24 bytes


Script de résolution

Mis à jour