domingo, 5 de junio de 2011

WriteUP GB200 CTF QUALS DEFCON

En el reto "Grab Bag" 200 encontramos un servidor corriendo en el puerto 6000 y para el cual nos dan la clave: "Never\$olv3d!". Cuando nos conectabamos al puerto y enviamos cualquier carácter obteníamos la siguiente salida:
000111222333444555000111222333444555000111222333444555

Después de esto el sistema esperaba una entrada y respondía con otra fila de números similar o con un mensaje de mensaje incorrecto. En el análisis encontramos:

1. Los números solo eran desde el 0 al 5.

2. El mensaje de error se generaba cada 4 números, por lo tanto lo que el sistema esperaba era de 4 números. Por lo que teníamos posibles combinaciones de 0000 a 5555.

3. Si no respondiamos una supuesta secuencia correcta entonces se generaba un error.

La solución:

Después de probar diferentes cosas intenté con cada combinación de números así: 0000, 1111, 2222, 3333, 4444, 5555, el único que generó una respuesta diferente fue: 2222, con este número obteníamos un "0" y luego el programa abortaba (close socket).

Intenté entonces enviarle la información de otra manera:

$perl -e 'print "Never\$olv3d!\n"' | nc pwn522.ddtek.biz 6000

y al ver que lo podía hacer, entonces envié el caso especifico del 2.

$perl -e 'print "Never\$olv3d!\n2222"' | nc pwn522.ddtek.biz 6000
000111222333444555000111222333444555000111222333444555
000111222333444555000111222333444555000111222333444555
Let's not be too rough on our own ignorance; it's what makes America great!

Busqué esta frase en Internet y encontré que el autor era:  Frank Zappa 
Intenté varias combinaciones en el scoreboard, pero finalmente use la clave:
KEY= "Let's not be too rough on our own ignorance; it's what makes America great!"

Resultando ser la KEY correcta =>  + 200.
Fácil no? :P

Pd
Este reto fue resuelto durante una clase de seguridad con los aprendices del SENA, gracias a ellos!.

5 comentarios:

Phicar dijo...

Osea que al final tampoco supiste que era la vaina? porque yo intente exactamente lo mismo, hice un java, me conecte blabla, y le empece a mandar randomed strings...y me boto el pass....pero sinceramente no creo que haya sido asi de tonto, sin ninguna idea extra, no crees?

nonroot (c) 1983/2013 dijo...

Phicar, con el binario en mano se podría saber que es exactamente, la deducción de como se da la coversación es lo que importa, son 4 bytes antes de responder, es posible que otra combinación de 4 bytes funcione. Hay que esperar otros writeups.

Anónimo dijo...

era un cubo de rubik: con la primera entrada lo desordenadas, con las sucesivas tenías que ordenarlo, y al hacerlo te daba la key

Anónimo dijo...

I started brute-force from 000 to 999, and it send me the key at "010".

I didn't even realize, what is happened. xD

// alex@lobotomy

Anónimo dijo...

Seems like we should send something to get the simular answer.

There are server responses:
http://pastebin.com/raw.php?i=KvbKR9Pm

As I said earlier, 010 can be the answer.

I noticed that 20'th char is always 0, 23'rd is always 1... so there is constant "1...2...3...4...5" in the middle.

But I still dont understand the algorithm. :)

Entradas populares