Nivel 3: crack the planet

Tras los comentarios del nivel 2, especialmente los del usuario anónimo, con el que he tenido una buena discusión (que me ha dado qué pensar, y ¡en la que me ha convencido! 🙂 coincido en que es mejor que vaya publicando pistas sobre cómo resolver poco a poco, y dar bastante más tiempo para cada prueba. El concurso ya terminó hace tiempo, pero aquellos de vosotros que estáis intentándolo, parece que ciertamente , tener las soluciones os desmotiva. No problem, las siguientes pruebas tendrán la solución explicada – es una opción- , pero con bastante más tiempo entre una y otra. Otra opción es crear un post donde la solución vaya con contraseña (en WordPress se pueden crear página protegidas) Así, sólo el que haya pasado la prueba podrá ver la solución y discutir pasos alternativos con el resto de usuarios. Pero esto tiene el problema de que dejaría fuera a quien más lo necesita… Se admiten sugerencias en los comentarios sobre cómo abordar esto. Incluso se admiten discusiones (pero a ser posible con usuarios no anónimos, para que no me de la sensación de ¡estar discutiendo con alguien sin rostro!)

Al lío: primera pista para el nivel 3. Para poder ejecutar el .exe y ver al menos qué es lo que hace, conviene leerse este post.

Nivel 2: Is anybody there?

«Hello 123.123.123.123? Is anybody there?» Así reza la primera línea de texto de la prueba 3 (nivel 2). Parece que el servidor quiere comunicarse con nosotros. Si analizamos las cabeceras HTTP con algún programa (por ejemplo, con el plugin LiveHTTPHeaders), podremos ver lo siguiente:


HTTP/1.x 200 OK
Date: Fri, 08 May 2009 22:16:08 GMT
Server: Apache/2.0.52 (CentOS)
X-Powered-By: PHP/4.3.9
YouWillNeedThis: theplanet
Set-Cookie: toctoctoc=3306
Content-Length: 232
Connection: close
Content-Type: text/html

«YouWillNeedThis: theplanet»… curiosa cabecera 😉 Esa pista la necesitaremos en el futuro.
Y el nombre de la cookie es auto-explicativa: el servidor nos está llamando. ¿A dónde? Al puerto 3306. Ese puerto es conocido, ahí suele estar a la escucha el servidor MySQL. No hay que pensar mucho más… aunque a algunos grupos esta prueba se les hizo cuesta arriba, jejeje…

Con Wireshark es posible capturar la trama que nos confirma ese intento de conexión. ¿Abrimos el puerto 3306 a ver qué pasa?

$ nc -l 3306

Recargamos la página y… nada, no conecta. La conexión se resetea. Parece que tiene que haber un servidor MySQL de verdad escuchando en el 3306 (no vale con netcat). Ponemos en marcha MySQL, recargamos la página y… nada. Mmmh…

Aquí hay que pensar un poco (más). Por seguridad, MySQL sólo se queda a la escucha a las peticiones que lleguen de localhost (127.0.0.1). Esto se define así en /etc/my.cnf :

bind-address = 127.0.0.1

Si queremos que escuche las peticiones de nuestra IP pública, sólo tenemos que ponerlo.

bind-address = nuestra_IP_publica

Ponemos en marcha de nuevo el servidor:
$ sudo /etc/init.d/mysql start

y el Wireshark a la escucha. Bingo.

Sabemos que el login es «hack». ¿Y el password? Bueno, aquí es donde la pista que nos llegó al principio nos ilumina el camino: theplanet. La forma más fácil de proceder ahora sería crear el usuario hack/theplanet y volver a recargar la página. Analizando el tráfico con Wireshark veremos que intenta usar la base de datos hackit. A continuación lanza la query:

insert into pereza
set ID=», hackme=’%5f%61%63%69%64%69%61%5f’

¡Ajá! ¿y para traducir de Hexa a ASCII?

$ echo -e «%5f%61%63%69%64%69%61%5f» | sed -e ‘s/%//g’ | xxd -r -p
_acidia_

Brasero dando la brasa

Lo siento por el título, pero no he podido evitar el chiste fácil 🙂

El programa de grabación de CD/DVDs de GNOME aparecía una y otra vez en el update-manager de Ubuntu 9.04. Y no había forma de deshacerse de él: no podía actualizar ni borrarlo, ni nada de nada. Realmente no afectaba a mi trabajo pero ese tipo de detalles al final es como una gota de agua que va cayendo y cayendo, golpeando siempre en el mismo sitio. Te va quemando…

El caso es que es un bug reconocido de Ubuntu 9.04, y ya hay un «parche» manual para que el update-manager aparezca limpio y reluciente (al parecer Brasero tiene un conflicto con nautilus-cd-burner, de ahí que borrando este último y luego actualizando, Brasero se instale sin problemas):

$ sudo apt-get remove nautilus-cd-burner
$ sudo apt-get dist-upgrade

Ale, un picor menos.

Again

Ha vuelto a ocurrir: Gmail no responde. Día de reflexión.

Y el sistema de monitorización de aplicaciones Google va con un día de retraso.

Menos mal que en Twitter puedes comprobar que no eres el único del mundo al que le pasa. Al parecer, ha sido un fallo a nivel mundial.

           

           

           

           

           

           

Nivel 1: hidden message

Esta prueba 2 (nivel 1) ha resultado ser la que más fácilmente han superado los participantes. Al entrar, lo primero que vemos es un enlace a un fichero de texto con el título «Hidden Message». El contenido a primera vista es vacío… pero si realizamos una selección con el ratón veremos que está lleno de espacios en blanco. Cada línea tiene un número distinto de espacios en blanco (entre 65 y 120) Esos números nos deben de hacer sospechar que representan caracteres ASCII. Basta por tanto con contar los espacios en blanco de cada línea, codificarlos a los caracteres correspondientes y leer el mensaje: «The Seven Deadly Sins and the Four Last Things: Pass: CAVE CAVE DEUS VIDET»

Por ejemplo, este método Java descodificaría el mensaje de blancos que le llega como parámetro:

public static String descodificar(String mensaje){
String res = «»;
Scanner s = new Scanner(mensaje);
s.useDelimiter(«n»);
while (s.hasNext()){
String espaciosLinea = s.next();
char c = (char) espaciosLinea.length();
res = res + «» + c;
}

return res;
}