Outils pour utilisateurs

Outils du site


writeup:microcorruption:hanoi

Hanoi

La fonction main appel directement la fonction login. Celle ci commence par afficher des informations, demande le mot de passe, puis appel test_password_valid. Pour débloquer la porte, elle vérifie si ce qui se trouve à l'adresse 0x2410 est égal à 0xF6.

4520 <login>
4520:  c243 1024      mov.b	#0x0, &0x2410
4524:  3f40 7e44      mov	#0x447e "Enter the password to continue.", r15
4528:  b012 de45      call	#0x45de <puts>
452c:  3f40 9e44      mov	#0x449e "Remember: passwords are between 8 and 16 characters.", r15
4530:  b012 de45      call	#0x45de <puts>
4534:  3e40 1c00      mov	#0x1c, r14
4538:  3f40 0024      mov	#0x2400, r15
453c:  b012 ce45      call	#0x45ce <getsn>
4540:  3f40 0024      mov	#0x2400, r15
4544:  b012 5444      call	#0x4454 <test_password_valid>
4548:  0f93           tst	r15
454a:  0324           jz	$+0x8
454c:  f240 ba00 1024 mov.b	#0xba, &0x2410
4552:  3f40 d344      mov	#0x44d3 "Testing if password is valid.", r15
4556:  b012 de45      call	#0x45de <puts>
455a:  f290 f600 1024 cmp.b	#0xf6, &0x2410
4560:  0720           jne	#0x4570 <login+0x50>
4562:  3f40 f144      mov	#0x44f1 "Access granted.", r15
4566:  b012 de45      call	#0x45de <puts>
456a:  b012 4844      call	#0x4448 <unlock_door>
456e:  3041           ret
4570:  3f40 0145      mov	#0x4501 "That password is not correct.", r15
4574:  b012 de45      call	#0x45de <puts>
4578:  3041           ret

On remarque aussi que la taille de ce qu'on rentre n'est pas vérifié et que notre entrée est stockée en 0x2400. Il suffit donc de spécifier comme input 41414141414141414141414141414141f6f6 afin d'écrire la valeur 0xF6 à l'adresse 0x2410 afin d'ouvrir la porte.

Note : dans ce niveau, la fonction test_password_valid déclenche l'interruption 0x7D pour appeler un périphérique qui lui connais et vérifie le mot de passe. (cf https://microcorruption.com/manual.pdf )

writeup/microcorruption/hanoi.txt · Dernière modification: 2014/10/19 15:27 par tlk