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 #7

    level7, avant dernier niveau…
    Il est moins dur que le précédent, il est même possible de le résoudre de 2 façons différentes, une barbare et une jolie.
    Une fois connecté on fonce dans /wargame, là le binaire sphinx est notre cible.
    Après exécution de celui-ci, on voit qu’il nous demande un nombre à 4 chiffres.

    1
    2
    
    level7@leviathan:/wargame$ ./sphinx
    usage: ./sphinx [4 digit code]

    Je vais montrer les 2 méthodes mais pas trop m’attarder sur la barbare vu que c’est un bête brute-forcing.
    Read more…


  • intruded.net : leviathan – level #6

    Bon level6, c’est le level qui m’a le plus bloqué sur leviathan.
    La technique utilisée pour faire le niveau s’appelle race condition.

    Rien dans le home level6, on file donc dans /wargame. Là le binaire printfile est SUID level7, c’est donc celui qui nous intéresse.
    Read more…


  • intruded.net : leviathan – level #5

    Hop, on arrive au level5, mais cette fois dans le répertoire home il y a un répertoire caché nommé .Trash, on le liste et on voit un exécutable nommé bin.
    Après exécution on voit une suite de nombre binaire qui s’affiche, on ltrace pour voir ce qui se passe, et que voit-on, ohhh le binaire lit le fichier /home/level6/.passwd :)

    1
    2
    3
    4
    
    level5@leviathan:~/.Trash$ ltrace ./bin
    __libc_start_main(0x80483e4, 1, 0xbffffac4, 0x8048530, 0x80484e0 <unfinished ...>
    fopen("/home/level6/.passwd", "r")               = 0
    +++ exited (status 255) +++

    On décode la suite de nombre binaire et on a le password, voilà…

    next?lol


  • intruded.net : leviathan – level #4

    Ouaih, on est au level4, c’est la moitié du challenge, super :>
    Bon en fait c’est exactement le même procédé que le level2… rien de plus, ce qui nous laisse au moins 3 méthodes pour le résoudre.
    Comme au level2 j’ai utilisé ltrace, je vais prendre gdb sur celui-ci.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
     80484cc:	e8 cb fe ff ff       	call   804839c <fgets@plt>
    80484d1:	8d 45 f5             	lea    0xfffffff5(%ebp),%eax
    80484d4:	89 44 24 04          	mov    %eax,0x4(%esp)
    80484d8:	8d 85 f5 fe ff ff    	lea    0xfffffef5(%ebp),%eax
    80484de:	89 04 24             	mov    %eax,(%esp)
    80484e1:	e8 76 fe ff ff       	call   804835c <strcmp@plt>
    80484e6:	85 c0                	test   %eax,%eax
    80484e8:	75 26                	jne    8048510 <do_stuff+0x8c>
    80484ea:	c7 04 24 08 87 04 08 	movl   $0x8048708,(%esp)
    80484f1:	e8 96 fe ff ff       	call   804838c <puts@plt>
    80484f6:	c7 04 24 ec 03 00 00 	movl   $0x3ec,(%esp)
    80484fd:	e8 6a fe ff ff       	call   804836c <seteuid@plt>
    8048502:	c7 04 24 1c 87 04 08 	movl   $0x804871c,(%esp)
    8048509:	e8 6e fe ff ff       	call   804837c <system@plt>
    804850e:	eb 0c                	jmp    804851c <do_stuff+0x98>
    8048510:	c7 04 24 24 87 04 08 	movl   $0x8048724,(%esp)
    8048517:	e8 70 fe ff ff       	call   804838c <puts@plt>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    (gdb) b * 0x080484e1
    Breakpoint 1 at 0x80484e1
    (gdb) r
    Starting program: /wargame/level4 
    Enter the password> lolilol  
     
    Breakpoint 1, 0x080484e1 in do_stuff ()
    (gdb) x/2x $esp
    0xbffff8c0:	0xbffff8dd	0xbffff9dd
    (gdb) x/s 0xbffff8dd
    0xbffff8dd:	 "lolilol\n"
    (gdb) x/s 0xbffff9dd
    0xbffff9dd:	 "snlprintf\n"
    (gdb)

    Voilà, on a le password du binaire (snlprintf), on ré-execute et on a un shell setuid level5, on va lire le fichier /home/level5/.passwd et c’est fini.

    next?lol


  • 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


  • intruded.net : leviathan – level #2

    Bon on se connecte sur le serveur avec l’user level2 est le password récupéré précédemment, comme pour le level précédent, on fait un petit ls histoire de voir si il y a quelque chose d’utile.
    Manque de bol, cette fois il n’y a rien, donc cd /wargame.

    Read more…


  • intruded.net : leviathan – level #1

    Voici comme promis le premier article pour les challenges intruded.

    On va donc voir comment résoudre le premier niveau, je rappelle que le but est de trouver le password level2.

    Ce premier niveau est vraiment très simple pour peu que vous connaissiez 2 commandes UNIX de base, c’est pour cela que je vous incite à chercher par vous même ;)

    Read more…