PDF de programación - Solución al Reto Hacking IX de Informática 64

Imágen de pdf Solución al Reto Hacking IX de Informática 64

Solución al Reto Hacking IX de Informática 64gráfica de visualizaciones

Actualizado el 6 de Mayo del 2018 (Publicado el 12 de Noviembre del 2017)
681 visualizaciones desde el 12 de Noviembre del 2017
661,6 KB
8 paginas
Creado hace 15a (01/09/2008)
Solución al Reto Hacking IX de Informática 64

Septiembre 2008 © Daniel Kachakil


Introducción

Este documento describe una solución al Reto Hacking IX de Informática 64, el
cuarto de la segunda temporada, que se publicó el 12 de septiembre de 2008 en la
siguiente dirección web:


http://retohacking9.elladodelmal.com




Pistas

De nuevo nos encontramos ante un reto en el que no hacen falta pistas, puesto
que el objetivo estaba claro desde el principio. En todo caso, el título del post que
anunciaba el reto (Hay que ser muy hombre o muy mujer) tenía mucha relación con el
tema, en el sentido de que necesitaremos habilidades humanas para superar el reto, pero
eso se ve a posteriori y tampoco sirve de ayuda.



1

Solución al Reto Hacking IX de Informática 64



© Daniel Kachakil


Visión general del reto
Tras darnos de alta y acceder con nuestro usuario registrado, nos encontramos

ante el primer nivel de los 10 que forman el reto. Por el texto que aparece en cada nivel
y por el propio título del reto podemos intuir que la cosa va de acertar captchas, nada
menos que 1000 por cada nivel y en un plazo máximo de una hora que se empezaba a
contar desde el primer acierto.


Con la habilidad suficiente tal vez no fuera imposible lograrlo a mano (con un
promedio de 3,6 segundos por acierto), pero evidentemente se trataba de automatizar las
peticiones, ya que hacerlo a mano resultaría un tanto aburrido y lento.


De todas formas, creo que en el planteamiento del reto no se tuvo en cuenta que
prácticamente todos los niveles tenían una solución alternativa bastante más sencilla (o
a lo mejor me equivoco), haciendo que el nivel 1 tuviera una solución idéntica a la del
nivel 8. Por ello, explicaré la solución "oficial" por un lado y el atajo por otro (me
imagino que éste último es el que utilizamos la mayoría de los participantes).

Nivel 1

Si le echamos un vistazo al código fuente de la página, veremos que el botón
Enviar tiene asociada una pequeña función JavaScript llamada ValidateCaptcha, cuyo
código aparece un poco más arriba. Simplificándola un poco, era similar a esta:


function ValidateCaptcha() {
if (document.getElementById('txtCaptcha').value == 'VSXVUTZQ') {
return true;
} else {
return false;
}
}

Bastaba con deshabilitar los scripts para que cada pulsación del botón Enviar
contara como un acierto más. Además, la solución del captcha aparece en el propio
código de la página como texto en claro, por lo que podríamos automatizar su lectura y
su posterior envío a través del formulario.

Supongo que en este caso la solución "oficial" coincide con el atajo, es decir,

capturar y reenviar 1000 veces la misma petición, manteniendo los valores asociados a
los parámetros relevantes que se enviaban por post y la cookie de autenticación:








Evidentemente, cada cual opta por las herramientas con las que se siente más
cómodo, así que hay cientos de formas de automatizar esta tarea. En mi caso adapté
parte del código que ya tenía hecho hace mucho tiempo y que incorporé en Marathon
Tool (principalmente la función Download de BaseEngine.vb). Lo importante es que,
transcurridos unos minutos dedicados a enviar las 1000 peticiones necesarias, pasamos
automáticamente al siguiente nivel.

__VIEWSTATE = /wEPDwUKMTEwNjI0MjY0MQ9kFgJmD2QWAgIDD2QWAgIB ...
__EVENTVALIDATION = /wEWBAKt2PnGBQKsoYL1DwK15qaS ...
ctl00$ContentPlaceHolder1$btEnviar = Enviar
.ASPXAUTH = 4A4AD74485F839D53AC26F746FCBA03A14F63307CC4971 ...



2

Solución al Reto Hacking IX de Informática 64



© Daniel Kachakil

Muy similar al nivel anterior, en esta ocasión nos encontramos con un campo

En esta ocasión, por ejemplo para el captcha "UWPCTNUU", nos encontramos

valor = 55575043544e5555

<input name="ctl00$ContentPlaceHolder1$_valor" type="hidden"
id="ctl00_ContentPlaceHolder1__valor" value="VSXVUTZQ" />


Nivel 2

oculto con la solución al captcha:





De nuevo, podíamos haber leído y reenviado el valor que se almacenaba en este
campo, pero bastaba con repetir exactamente el mismo procedimiento del nivel 1,
evitando el envío del parámetro ctl00$ContentPlaceHolder1$_valor (o en general,
haciendo que coincida con el valor de ctl00$ContentPlaceHolder1$txtCaptcha)

Nivel 3

con una cookie como la siguiente:




Es evidente que se trata de los valores ASCII de cada carácter del captcha,
puestos en valor en hexadecimal y concatenados. Por ejemplo, en la secuencia anterior
tenemos que 0x55 = "U", 0x57 = "W", 0x50 = "P", etc.


Podíamos optar por leer y convertir estos valores en sus correspondientes
caracteres para decodificar el captcha de forma automatizada, pero de nuevo bastaba
con repetir exactamente el mismo procedimiento del nivel 1, enviando además una
cookie llamada valor con su contenido en blanco.

Nivel 4

de la imagen corresponde con el valor del captcha mostrado:




Sin embargo, se trata del primer nivel que realmente obliga a la lectura de este
valor y a su posterior reenvío, por lo que tras realizar una petición inicial, procesaremos
el contenido de la página para extraer el captcha (por ejemplo, buscando la posición de
la primera aparición de la cadena ".gif" y recuperando los 8 caracteres anteriores). En la
petición siguiente lo enviamos por POST en ctl00$ContentPlaceHolder1$txtCaptcha,
leyendo de paso el nuevo captcha generado y así sucesivamente hasta llegar a completar
las 1000 peticiones (sin olvidarnos de la cookie ASP.NET_SessionId).

Nivel 5

longitud coincide con la de los captchas que han ido apareciendo hasta el momento:



Este nivel puede parecer incluso más fácil que el anterior, puesto que el nombre

En este nivel observamos que hay un parámetro en la URL llamado key. Su

http://retohacking9.elladodelmal.com/Niveles/Nivel05/Default.aspx?key=ONOATHZK

<img id="ctl00_ContentPlaceHolder1_ImgCapcha" src="imagenes/DVNZVSHC.gif" />



3

Solución al Reto Hacking IX de Informática 64



© Daniel Kachakil

Key = AAAAAAAA –> Captcha = OAPSUNMO
Key = BBBBBBBB –> Captcha = PBQTVONP
Key = CCCCCCCC –> Captcha = QCRUWPOQ

14, 0, 15, 18, 20, 13, 12, 14

De todas formas, supongo que la solución oficial era la primera, así que la



Podemos molestarnos en intentar averiguar la relación entre esa clave y el
correspondiente captcha generado, pero es totalmente innecesario, ya que de nuevo
podemos reenviar 1000 veces cualquier petición válida y superaremos el nivel…


expongo aquí porque la relación es muy fácil de obtener. Por ejemplo:






Es evidente que existe una relación lineal entre cada carácter, por lo que basta
con desplazar el alfabeto las siguientes posiciones respectivamente (es decir, se trata de
un clásico y simple cifrado de Vigenère):



Nivel 6

En este nivel nos encontramos con un conjunto de captchas con nombres de
algunos dioses de la mitología griega. Bastaba con actualizar o refrescar la página una y
otra vez para darnos cuenta de que el conjunto de nombres siempre aparecía de forma
secuencial. En caso de intentar acertarlos, de vez en cuando se rompía la secuencia ante
algún fallo, pero en general se respetaba el orden siempre que se acertaba el captcha.


Por tanto, si tomamos nota de un trozo de la secuencia lo suficientemente largo
como para obtener una tasa de aciertos razonable, podremos superar el nivel sin mayor
dificultad, a pesar de requerir una cantidad de tiempo y peticiones considerablemente
mayor al estrictamente necesario de haber tomado nota de la secuencia completa. Por
ejemplo, con la siguiente secuencia sería más que suficiente:





La clave de este método consiste en detectar el primer acierto (por ejemplo,
buscando la cadena "aciertos" en la respuesta) y sincronizar la secuencia a partir de ahí.
Iremos realizando peticiones con el primer valor de la secuencia hasta que se detecte un
acierto. Entonces incrementamos la posición actual de la secuencia hasta encontrar un
fallo, momento en el que volveremos a empezar por el principio y así sucesivamente
hasta completar los 1000 necesarios. Como curiosidad, tras el último elemento de la
lista el servidor devolvía un error 500 (posiblemente por algún índice fuera de rango).

Nivel 7
Este nivel parece idéntico al tercero (el texto del captcha se encuentra codificado

en la cookie "valor"), pero se diferencia por un pequeño detalle que nos va a complicar
un poco la solución. Después de acumular 6 aciertos (ya fueran consecutivos o no), nos
encontraremos con la siguiente frase que nos impedirá avanzar:




Himeneo, Cibeles, Evadne, Cerbero, Hipotoo, Hebe, Irene, Hipolita, Argos,
Alcmena, Hermes, Adonis, Ganimedes, Furias, Calisto, Afrodita, Faetonte, Gigantes

Ya llevas demasiados aciertos seguidos, ¿no te parece?



4

Solución al Reto Hacking IX de Informática 64



© Daniel Kachakil

http://retohackingIX.elladodelmal.com:81




De alguna forma, la aplicación era capaz de detectar si se estaban recibiendo
demasiadas peticiones válidas desde una misma ubicación. Hay muchos factores que se
podrían haber tomado como referencia para identificar dicha repetición, así que mis
primeros intentos se centraron en enviar peticiones incorrectas, en cerrar y abrir de
nuevo la sesión del usuario, en dejar pasar un buen rato entre aciertos, en modificar
parámetros de la petición que enviaría el propio navegador (como User-Agent, Referer,
X-Forwarding-For, etc.), pero todas esas pruebas no tuvieron éxito. También hice
algunas pruebas desde otra IP, pero tampoco hubo manera de burlar el mecanismo.


Resulta qu
  • Links de descarga
http://lwp-l.com/pdf7464

Comentarios de: Solución al Reto Hacking IX de Informática 64 (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad