SER o no ser

¡Hola bebés! <3

La mayoría habrá visto hoy la noticia sobre los parquímetros de Madrid: “Un empleado de los parquímetros de Madrid roba 45.000€ con un truco informático”


En resumen, cuenta que el susodicho (trabajador de UTE Madrid Sur Movilidad*) colocaba una “placa pirata” en las máquinas durante unas horas, evitando que el parquímetro se comunicara con la central y diera parte de las transacciones realizadas. De este modo, podía vaciar la caja sin que los números no cuadraran, quitar la placa, y que todo volviera a la normalidad.


Datos interesantes del artículo:

  • Adjudicación en 2014 del “contrato integral de movilidad de la ciudad de Madrid” (parquímetros + bicicletas) por 862,4 millones en 12 años. Zona norte gestionada por Dornier, API Movilidad, Vinci Park, Setex y Electronic Trafic. Zona sur, gestionada por UTE Madrid Sur Movilidad.

  • Unos 4100 parquímetros en toda la ciudad

  • Empresa Parkeon elaborando el informe del suceso

  • La máquina informa a la UTE y al Ayuntamiento de todas las operaciones: toques emitidos, dinero y tipos de monedas

  • El fabricante dice que es un error que la misma persona tuviera las llaves del habitáculo de recaudación y mantenimiento, ya que son independientes

Leer mas...


[#Insanity Writeup] Guestbook 1 & 2 (web) - 0CTF 2016

Jelou!


Seguimos vivos después de un intenso fin de semana de sadomaso (3 CTFs simultáneos... -_-'). Al final sacamos pocos flags, pero nos vamos con la moral alta después de haber sido los únicos primeros en resolver Guestbook 2 en 0CTF.

Así que aqui va el write-up:

Leer mas...


[#Insanity Writeup] Legend?Legend!(web) - SSCTF 2016

Hola de nuevo, queridos fanboys! :*


Este finde fue el SSCTF (no, no eran nazis, eran chinos). Y aunque no tuvimos demasiados recursos al final resolvimos algunas pruebas (casi todas web, como no xD), entre ellas WEB300 donde nos llevamos el firstblood y nuestro nombre quedó inscrito para la posteridad.

Leer mas...


[#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...


Página 1 de 7 Siguiente