[#Insanity Writeup] RemotePrinter (exploiting) - Internetwache2016

Hello everyone! :)


Este finde tuvo lugar el Internetwache 2016 CTF y como algunos de estos cabrones estaban en la ResaCON le tuve que hacer frente por primera vez a las pruebas de exploiting y al final conseguí sacarlas todas :D (aunque fuesen facilitas..)


Así que para variar de tanto WEB os traigo un writeup de la prueba RemotePrinter (EXP80).

Leer mas...


[#Insanity Writeup] Bring The Noise - insomnihack 2016

Se trata de un script que abre un servicio en un host. Para resolver el reto se proporciona el código del mismo; por lo tanto es posible su ejecución en local y hacer pruebas cuando uno quiera :) Más que crypto, esto consiste en entender el código del servidor.


Básicamente se trata de un programa que carga el contenido de un archivo llamado "flag". El objetivo es hacer que el script nos lo transmita, pero para llegar a ese punto (línea 53) se hacen primero dos checks (líneas 39 y 50). Si el flujo de ejecución entra en alguno de los dos "if"s, escupe un mensaje y se acabó la fiesta. Por lo tanto, esos son los dos puntos a bypassear. El script que soluciona el reto es éste.

 

  • Para resolver el primer check, el servidor devuelve 5 números en hexadecimal. Mirando el código se deduce que hay que bruteforcear "algo" cuyos primeros 5 valores de su hash MD5 resulten iguales al número recibido. Antes de optar por /dev/urandom, es mucho más eficiente (por rapidez y por no gastar entropía del sistema) calcular los hashes de 0, de 1, de 2...hasta encontrar uno cuyos primeros 5 bytes coincidan. No debería llevar más de 5 o 10 segundos en un portátil normalillo. En mi solución, estas operaciones se hacen con el while de la línea 19.

 

Como el número que proporciona el servidor es aleatorio y diferente en cada ejecución, NO se debe cerrar el socket. En caso de cerrarlo, habría que volver a hacer el procesado con otro número distinto. Este tipo de checks son habituales para evitar que la gente bruteforcee mediante red, la verdadera chicha (hay que hacer fuerza bruta pero en local, y mandar un único paquete con la solución).

 

  • El segundo check trata de entender lo que hace la función "learn_with_vibrations()", línea 17. Devuelve 40 filas de 7 valores octales. Mirando el código fuente del servidor, se comprueba que el último valor de cada fila es la suma del producto de cada uno de los primeros 6 valores con otros 6 valores "constantes" y aleatorios (array "solution", constante en cada ejecución para todas las filas). Todas las operaciones hechas en módulo 8. Y además, cada último valor se altera sumándole aleatoriamente uno de los valores siguientes [-1, 0, 1] (la vibración se modela de esa forma). El cliente debe devolver entonces el array de 6 valores "solution" correcto, deducido de las 40 ecuaciones. Un problema de ecuaciones lineales en módulo 8, sin más. Iterando con el for de la línea 33 se bruteforcean los 6 valores que satisfacen las 40 soluciones.

 

Flag:
INS{ErrorsOccurMistakesAreMade}

 

Besicos.

Leer mas...


[#Insanity Writeup] hackme - SharifCTF 2016

Buenas!


Os traigo el writeup del otro reto del finde. Parece ser que el CTF de repente pasó a valer de 0.0 a 25.0 puntos de peso sin previo aviso, por lo que nos descolgamos un poco del ranking. A partir de ahora tendremos que jugar siempre por si acaso.. -_-


Sin más, "hackme", reto web de 400 puntos en el que había que encadenar varias vulnerabilidades.

Leer mas...


[#Insanity Writeup] technews - SharifCTF 2016

Ohai!


Este finde se celebró el SharifCTF, pero como ibamos un poco saturados por culpa de los CTFs indios y además este no puntuaba en CTFtime, no nos dedicamos a él. Pero sí me dio tiempo a echarle un vistazo a dos retos web.


Aquí os dejo mis soluciones...

Leer mas...


Página 1 de 2 Siguiente