QuickScan
Catégorie: Reverse Difficulté: medium Flag: HTB{y0u_4n4lyz3d_th3_p4tt3ns!}
Challenge
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.
Ce challenge tourne sur un docker, disponible sur Github
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 :
Trouver l’adresse d’
entrydans notre binaireRécupérer l’offset à
adresse(entry) + 7Calculer
adresse(entry) + 11 + offsetLire les
24 bytes
Script de résolution
Mis à jour