Outils pour utilisateurs

Outils du site


writeup:microcorruption:reykjavik

Reykjavik

La fonction main commence par appeler la fonction enc. Par la suite, elle saute en 0x2400, on ne connait pas le nom de cette fonction.

4438 <main>
4438:  3e40 2045      mov	#0x4520, r14
443c:  0f4e           mov	r14, r15
443e:  3e40 f800      mov	#0xf8, r14
4442:  3f40 0024      mov	#0x2400, r15
4446:  b012 8644      call	#0x4486 <enc>
444a:  b012 0024      call	#0x2400
444e:  0f43           clr	r15

En regardant de plus prêt la fonction enc, elle semble déchiffrer des données situées en 0x2400. On se doute donc que celle ci déchiffre une fonction pour ensuite sauter dessus et exécuter le code qui demande le mot de passe le valide.

Pour éviter de reverse la routine de déchiffrement, on lance le programme et on stop son exécution au moment du call #0x2400, il suffit alors d'ouvrir l'hexdump du programme avec IDA pour avoir une jolie vue de ce qui s'y passe :-)

Après une bref lecture du code assembleur, elle :

  • Boucle en appelant l'interruption 0 pour afficher what's the password?\n
  • Lis l'input utilisateur en le stockant sur la stack
  • Compare les deux premiers octets de l'input avec 0xFC18. Si l'input utilisateur commence bien par 0xFC18, alors la porte est ouverte

Il suffit donc de valider le niveau en entrant FC18.

writeup/microcorruption/reykjavik.txt · Dernière modification: 2014/11/03 07:22 par tlk