sábado, febrero 23, 2008

Corolario al Solucionario del Reto Hacking VI

Hola a todos,

Dani ha publicado un solucionario del Reto Hacking VI perfecto, pero supongo que muchos os preguntáis que coño pasa por mi cabeza cuando preparamos un juego de estos. Os doy mis impresiones.

Fase 1:

Estaba pensada para ser pasada usando Aritmethic Blind SQL Injection, es decir, jugando con las matemáticas. Pero había varias formas de pasarlo.

- Arithmetic Blind SQL Injection: Utilizando maxint 2147483647 y sumarle el valor ASCII de la letra para que salga el mensaje de "uy, uy, uy": 2147483647 – Contador + (select ASCII(letra) from tabla)

          -> Será verdad cuando salga “Uy,uy,uy”
          -> Será falso cuando salga “vamos garrupitaze”

- Generando división por 0:
          -> (1/1) ->Verdad cuando salga “vamos garrupitaze”
          -> (1/0)->Falso cuando salga “error de ACCESS”.

- Devolviendo 1 o vacio. Si era verdad sale el mensaje de “vamos, vamos, garrupitaze” y si no, aparece el mensaje de error de ACCESS.

          -> (select 1 from garrupito where 1=0)
          -> (select 1 from garrupito where 1=1)

¿Cómo saber el nombre de las tablas y los campos? Pues es ACCESS, así que imaginación o… haber asistido a alguna sesión de Mandingo de Bruteforceo de Aplicaciones web. Una vez que tienes la lógica te creas un pequeño diccionario y pruebas sustituyendo. Por ejemplo, descubrir tablas con los casos anteriores sería.

- Artithmetic: 2147483647 * (select 1 form tabla): Si tabla existe sale “uy,uy,uy”, de lo contrario tabla no existe.

- División por cero: (1/(select 1 from tabla)) -> Si existe sale “vamos, vamos, garrupitaze”.

- Devolviendo 1 o vacío: (select 1 from tabla) -> Si existe sale “vamos,vamos, garrupitaze”.

Averiguar el nombre de los campos se hace igual pero para que no moleste basta con poner algo como:

          (select 1 from tabla_descubierta where campo=valor or 1=1)

Si el campo no existe o no es del tipo de datos adecuado peta y devuelve valor vacio. (Recordad que ACCESS no tiene optimizador de consultas). El resto… ya está en el solucionario de Dani.

Fase 2:

La forma sencilla de pasarse la segunda fase es cambiar la extensión al archivo por .rar y listo. Hubo que poner contraseña para que al descargar la imagen el navegador no detectase el rar y te lo permita descargar como .rar. No hubiera tenido gracia. La pass no era parte del reto, solo para evitar eso y Dani explica esa fase a las mil maravillas en su solucionario… y… habrá Reto Hacking VII para después de semana santa, creo que el Viernes 4 de Abril, será la fecha perfecta. ¿os parece bien?

Apuntes Finales

Sobre la DLL y el código .NET. Pues.. teníamos petada el registro de la dll en el IIS, la desregistramos, la volvimos a registrar y listo. Como no esperábamos que nadie encontra la ruta del log (como pasó con el retohacking4) pues no le pusimos pass al log. En el momento que SealTeam nos avisó, le pusimos pass y luego arreglamos lo de la dll. La forma de Sealteam valió porque encontró el fallo, así que no pasa nada.

No sólo SealTeam siguió la pista del juego de ajedrez y vista, ¿verdad mandingo? y quiero publicar el solucionario de Palako, si consigo que me lo envíe junto con una pequeña herramienta que hubiera ayudado a más de uno con la fase dos, ¿verdad penyaskito?. El gran RoMaNSoFt deberá publicar su solucionario en "su sala de trofeos particular" o si no no sería él ¿verdad Roman?. A Bambú, Kabracity, TheSur y g30rg3_x mi enhorabuena por sacarlo. A los que lo saquéis con solucionario y todo os pondré un positivo, por hacer los deberes y estudiar, así que a currar y ¡nos vemos en el Reto Hacking VII!

Saludos Malingos!

4 comentarios:

  1. así que la p*t* pass no estaba prevista?Me cago en to lo que se menea xDD!Que el rar salió al primer intento, me pareció lo más probable meter algo como EOF, pero para la pass tuve al pc currando horas xDDDDD.

    Pos nada, esperamos el VII para ese 4 de Abril :).Y por dar por saco a Romansoft(creo que era él), más esteganografía :P!!
    (y como dice Mandingo, pistas más normales, que la primera pista era igual de difícil que el reto ^_^)

    ResponderEliminar
  2. Yo con no haberme quedado con las orejas de burro me conformo...
    No se puede ganar un mundial montado en un Force India.

    ResponderEliminar
  3. @kabracity: otro que se me sube a las barbas!???!! :)))) No stego, please!!! (me voy a tener que hacer una camiseta).

    @maligno: creo que es buena fecha para el reto siguiente. Por cierto, esta vez paso de solucionario, el de Dani es super-completo, no tengo nada más que aportar así que... :) (y el último ni lo publicaste, que no creas que se me ha olvidado xDD). ¿Qué es eso de mi "sala de trofeos"? ~~

    -r

    ResponderEliminar
  4. @RoMaNSoFt, tu solucionario junto con lsbstego fueron publicados en una noticia del technews y enviado a 5.000 contactos. ¿No te enteraste? ¿Quieres ver la newsletter perro?

    Saludos!

    ResponderEliminar