systemadmin.es > Seguridad > Wargame leviathan: nivel 2

Wargame leviathan: nivel 2

En el segundo nivel del wargame leviathan ya tenemos que mirar dentro de /wargame para encontrar el binario a ejecutar:

Con un simple ls vemos que tenemos permisos sobre el llamado check:

level2@leviathan:/wargame$ ls -la
total 48
drwxr-xr-x  2 root   root   4096 2008-03-26 02:41 .
drwxr-xr-x 22 root   root   4096 2008-03-26 02:54 ..
-r-sr-s---  1 level3 level2 7738 2008-03-26 02:31 check
-r-sr-s---  1 level5 level4 8090 2008-03-26 02:33 level4
-r-sr-s---  1 level7 level6 7696 2008-03-26 02:34 printfile
-r-sr-s---  1 level4 level3 8051 2008-03-26 02:51 prog
-r-sr-s---  1 level8 level7 7661 2008-03-26 02:35 sphinx

Si lo ejecutamos vemos que nos pide una contraseña:

level2@leviathan:/wargame$ ./check 
password: aa
Wrong password, Good Bye ...

Para ver con que esta comparando lo que le introducimos podemos hacerlo mediante un ltrace o bien mirando las cadenas que contiene el binario mediante el comando strings. En este caso probaremos con ltrace:

level2@leviathan:/wargame$ ltrace ./check 
__libc_start_main(0x8048464, 1, 0xbffffad4, 0x8048580, 0x8048530 <unfinished ...>
printf("password: ")                                                                                                           = 10
getchar(0x8048638, 0xb7fe0ff4, 0xbffffa28, 0x80483f0, 0xb7fe0ff4password: aa
)                                                              = 97
getchar(0x8048638, 0xb7fe0ff4, 0xbffffa28, 0x80483f0, 0xb7fe0ff4)                                                              = 97
getchar(0x8048638, 0xb7fe0ff4, 0xbffffa28, 0x80483f0, 0xb7fe0ff4)                                                              = 10
strcmp("aa\n", "sex")                                                                                                          = -1
puts("Wrong password, Good Bye ..."Wrong password, Good Bye ...
)                                                                                           = 29
+++ exited (status 29) +++

La parte que nos interesa es la función strcmp:

strcmp("aa\n", "sex")

Por lo tanto, probamos de volver a ejecutarlo con dicha contraseña para obtener una shell:

level2@leviathan:/wargame$ ./check 
password: sex
sh-3.1$ id
uid=1001(level2) gid=1001(level2) euid=1002(level3) groups=1001(level2)

Con dicha shell simplemente hacemos un cat del fichero .passwd de la home del level3 para obtener la contraseña:

sh-3.1$ cat /home/level3/.passwd 
oc7vaCOg

Otros niveles de este wargame:

One comment to “Wargame leviathan: nivel 2”

  1. Simplemente en este nivel, para saber la password, que contrastaba el ejecutable “check”, edité el archivo, y apareció un texto cercano al literal del solicitud de password “sexsecretgodlove”.

    Me pareció curiosa la palabra. y al ponerla, conseguí abrír la shell.

    Cualquier palabra que comience por sex… lógicamente también lo abre

    En niveles superiores también es necesario saber una password… que con el procedimiento de editar el fichero no funciona (demasiado sencillo).

    Es más, el que ha hecho el wargame para despistar, por si alguin listillo como yo , edita el fichero y saca literales, en futuros levels le pone trampas. 🙂

    De hecho hay por ahí otro nivel que editando un fichero que llama a la shell, te da la pass que contiene la palabra s3cr3th (junto a cadenas como no33kakakaka y cosas así) si queréis mirarla vosotros.. y no funciona, es para despistar.

    La solución con ltrace es mas elegante y necesaria en lo venidero.

    Ah… para cuando prepares el level3 (Este concretamente a mi me encantó)

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>