QuickScan
Dernière mise à jour
Cet article vous a-t-il été utile ?
Dernière mise à jour
Cet article vous a-t-il été utile ?
Catégorie: Reverse Difficulté: medium Flag: HTB{y0u_4n4lyz3d_th3_p4tt3ns!}
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
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’entry
dans notre binaire
Récupérer l’offset à adresse(entry) + 7
Calculer adresse(entry) + 11 + offset
Lire les 24 bytes