Excelente participación del equipo en HackDef 2020 solo saque 2 flags:
Web
Exif 300 puntos
En este reto el sitio web permite subir un XML y procesaba la información regresando un mensaje de que se habia subido exitosamente .
Haciendo un poco de cambios y buscando en el post pude realizar el ataque con el siguiente payload y asi obtener la flag:
1 | <?xml version="1.0" encoding="ISO-8859-1"?> |
Crypto
Flip33r 300 puntos
Me costo trabajo entender este reto sin embargo gracias al post y 3 horas de lectura pude comprender, el codigo es el siguiente:
1 | import socketserver |
El reto pregunta que ¿cual es la debilidad?, para empezar el reto genera tokens aleatoriamente y utiliza AES en modo CBC es decir un modo de cifrado a bloques, normalmente es cifrado necesita un vector inicialización (iv) un mensaje(texto a cifrar) y una llave (en este caso gen_random_key()), para empezar cada que se inicia el programa obtienes 3 cosas:
1 | Token: este es el mensaje cifrado con AES. |
Lo unico que nos falta es la llave….. acorde al post mencionado anteriormente la debilidad de CBC es que utiliza el bloque cifrado para cifrar el texto plano del siguiente bloque y viceversa para el descifrado. Que nos quiere decir esto?, que si conocemos el bloque inicializador podemos hacer XOR en la posición del iv
poder realizar lo que queramos es decir nuestra meta es que:
flipid=6 -> para que nos de la flag.
Probando un poco me di cuenta que siempre nos regresaba flipid=2 o flipid=3, ya que se genera aleatoriamente siempre y cuando 100 sea modulo de 5, entonces el 6 tendria que cambiarse a mano (que que un bruteforce no serviria).
El numero que se tiene que cambiar esta en la octava posición, eso quiere decir que un XOR de la octava A
de iv
en la nos dara un numero diferente…..
Ahora hice un XOR
de 0x41
con 0x01
para ver si cambiaba y me dio el caracter @
sin embargo el id bajo, esto quiere decir que si hago un XOR
con los numeros que faltan que en este caso eran 4 por que el programa me daba el flipid=2, entonces al hacer un XOR
me sale la letra E
entonces:
1 | (base) mac@x86_64-apple-darwin13 hdef % nc 3.19.72.219 3166 |