HackIt! 2007 : un repaso a las pruebas

Ayer, los miembros de diariolinux.com nos apuntamos a la Euskal Encounter 2008. Como ya comenté, este año iremos con más experiencia y ganas si cabe a participar en el HackIt! . No nos hacemos demasiadas ilusiones porque hay grupos muy, muy buenos compitiendo. El caso es que me interesaba repasar la solución a las pruebas del HackIt2007, por varias razones: para ir desempolvando mis conocimientos de ensamblador (muy oxidados ya :-), de GDB, OllyDBG…, para ahorrarle trabajo al organizador ( txipi ), y para que queden por escrito algunos apuntes sobre el tema, que usaré más adelante en mis clases de seguridad informática.

He colgado de http://hackit2.diariolinux.com el concurso del año pasado, que analizaré a lo largo de estos días, al menos hasta llegar a la prueba 11, donde nos atascamos (así, si algún lector la superó en su día o la supera ahora que está colgada en DL, pues mejor que mejor, porque podrá explicarnos al resto cómo lo hizo 🙂

Sin más dilación, pasamos con la primera prueba, que como toda «primera» , su resolución es bastante sencilla. Lo primero que se nos ocurre es analizar el código fuente de la página, centrándonos en el ćodigo Javascript que recoge los datos (login y password) y los envía al servidor:

<script src="JavaScript">
        function Login() {
          var user = document.login.username.value;
          var pass = document.login.password.value;
          if (user=="euskal" & pass=="p4rt7") {
        location.href = 'level2-' + pass + '.html';
      } else {
        alert("ACCESS DENIED!");
      };
        }
  script>

A primera vista parece que el login(username) debería de ser euskal y el password p4rt7, pero si probamos esos datos en el formulario veremos que son incorrectos (!). ¿Dónde está el truco? En la primera línea del código anterior:

<script src="JavaScript">

Esto que a primera vista podría parecer una línea que dice «el código fuente que viene a continuación está escrito en JavaScript», resulta que no dice eso, sino «insertar aquí el código fuente de un script almacenado en un fichero que se llama… tachán, tachán, ‘JavaScript’ «. El dichoso archivo podría haber tenido otro nombre, como funcion.js o algo similar, pero no, le han llamado JavaScript, para hacerlo un poco menos trivial 😉

Si abrimos ese fichero, veremos la clave que nos lleva al nivel 2.

Euskal y Gipuzkoa Encounter: nos vemos en Tolosa y Barakaldo

Hoy miércoles 20 de Febrero se abre el período de inscripción a las partys que en Euskadi esperamos a lo largo del año, la Euskal Encounter 16 (en Barakaldo, 24-27 de Julio) y la Gipuzkoa Encounter 2 (Tolosa, del 25 al 27 de Abril) . DiarioLinux.com estará en ambas, cómo no, como cada año. En cuanto tengamos el sitio cogido, informaremos en este mismo post de los número de asiento, para que los lectores que quieran acercarse a charlar, sepan dónde encontrarnos. En la Euskal, por supuesto, competiremos de nuevo día y noche para ganar el concurso de HackIt! 😉

Matar todos los procesos de un tiro (y II)

Por aclamación popular 🙂 Estas tres líneas de comandos son equivalentes, todas ellas buscan procesos en cuyo nombre (o argumentos) contengan el string «cadena» y los mata. Para ser sinceros, no conocía pkill, y al parecer es exactamente el comando que resume todo este post. Es genial tener una base de lectores expertos que enseguida muestran la mejor solución al problema 🙂

$ kill -9 <strong>ps</strong> -ef | <strong>grep</strong> -i cadena | <strong>awk</strong> {’print $2′} $ pgrep cadena | xargs kill -9 $ pkill -9 cadena

Finalmente, también se ha nombrado killall, pero para buscar los procesos a matar, sólo se basa en el nombre del ejecutable, y no puedes decirle que mate «cualquier proceso en cuyos argumentos aparezca la cadena X», por ejemplo.

Matar todos los procesos de un tiro

Apunto aquí una orden que he necesitado miles de veces y de la que nunca me acuerdo:

$ kill -9 <strong>ps</strong> -ef | <strong>grep</strong> -i nombre | <strong>awk</strong> {'print $2'}

Mata todos los procesos que tengan la cadena nombre en la descripción . Si no te acuerdas de esa orden, siempre puedes hacer un ps -aww| grep nombre y luego matar los procesos copiando y pegando los identificadores en una orden kill.

¿Sabías que Linux Magazine publica online su archivo de revistas?

Linux Magazine España tiene la sana costumbre de publicar su archivo de revistas online a medida que pasa el tiempo. Hoy nos informan por correo de que acaban de subir  nuevos artículos para los números 27, 28, 29, 30, 31, 32, 33, 34 y 35 de Linux Magazine, sumando, a la ya extensa hemeroteca, otros 27 nuevos artículos en formato PDF para su libre descarga. Los números del 1 al 27, además,  de esta forma, están ya completamente subidos. Puedes acceder a todos ellos siguiendo el esquema de numeración siguiente:     http://www.linux-magazine.es/issue/27   para acceder al número  27 al completo, o http://www.linux-magazine.es/issue/08 para acceder al número 8 (ojo con el 0 inicial). No me queda más que agradecer a la revista, primero el detalle de subir su hemeroteca para acceso gratuito a su web y segundo el esfuerzo que eso supone (sé muy bien lo que es mantener actualizado diariamente un sitio web 😉