HACKER101 CTF – OSU CTF

Descripción

Este CTF tiene el nombre ‘OSU CTF’. La dificultad es moderada y da 4 puntos por bandera. Este CTF tiene una sola bandera.

Empezamos

La primera vez que lanzamos este CTF, podemos ver un inicio de sesión que se encuentra en /login. Hay un mensaje que dice “Natasha Drew really wants to go to hacker camp but she doesn’t have the grades. Hack into the OSUSEC student portal and give her all A’s so she can go!”. Tenemos como objetivo cambiar la nota total de Natasha a A.

Lo primero que hago es mirar el código fuente de la página ‘/login’ porque la sugerencia dice que siempre debemos verificar el javascript en la página. Pero, no encontré nada interesante en esta página, el código javascript en esta página solo está revisando la cookie.

Intentamos realizar una inyección en el formulario de inicio de sesión

Probamos el formulario de inicio de sesión. Primero, estoy usando un nombre de usuario y contraseña comunes, pero todos devuelven inválidos. Entonces, trato de logearme como usuario usando SQL Injection. Para ello, utilizamos la herramienta Intruder de Burp.

Capturamos el formulario de inicio de sesión con el proxy de Burp.

Posteriormente, lo enviamos a Intruder donde intentaremos buscar un payload realice el login.

Cualquiera de los payloads que devuelven el status 302 sirve para logearnos en la aplicación.

Una vez logeados, podemos ver una lista de alumnos con sus respectivas notas.

A partir de este momento no se puede hacer nada más con la información que tenemos hasta el momento. Pasamos a analizar archivos .js

En concreto el archivo app.min.js.

Buscando evidencias en archivos JS

Esta página no tiene ninguna característica, sino que solo muestra los datos de algunos estudiantes (¿o tal vez hay características ocultas?). Entonces, trato de averiguar cómo funciona el código javascript en esta página.

Encontré algo interesante en el código javascript que se cargó en la página del tablero, se encuentra en ‘/assets/js/app.min.js ‘.

La variable ‘s.admin’ parece sospechosa. Luego intento console.log (s.admin) y su retorno es falso. Entonces, pensé que tal vez pudiese cambiarlo.

Abro el depurador en Herramientas de desarrollo. Luego agregue un punto de ruptura en la segunda línea y vuelva a cargar la página. Ahora hará una pausa.

Cambie a la consola y escriba ‘s.admin = true’. Luego, vuelva a Debugger y reanude la página. Ahora, puedo hacer clic en el nombre de los estudiantes.

Hago clic en ‘Brett, Nancie’ y ahora me da esto ‘ / update-student / TmFuY2llX0JyZXR0’.

La cadena aleatoria en esa URL parece sospechosa, utilizo esta herramienta (https://hashes.com/en/tools/hash_identifier) para identificar qué significa esa cadena. Los resultados dicen que es posible que haya sido codificado en base64. Entonces, trato de decodificarlo y devuelve la cadena ‘Nancie_Brett’.

Ahora, trato de reemplazar ‘Nancie_Brett’ con ‘Natasha_Drew’ y, por supuesto, primero codifico esta cadena. Entonces, mi URL final es ‘http://xx.xx.xx.xxx/xxxxxxxxxx/update-student/TmF0YXNoYV9Ecm ‘. Cambie toda la puntuación a A y actualice el registro. Luego, aparecerá la bandera.

No responses yet

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *