Write-ups

Resolución del CTF PinBreaker


Enumeración

Escaneo de puertos

Realizamos un escaneo de todos los puertos para identificar los servicios activos en el sistema objetivo.

nmap -p- --open -sCV -Pn -n --min-rate 5000 192.168.0.100
  • -p- : Escaneo de todos los puertos. (65535)
  • -sS : Realiza un TCP SYN Scan para escanear rápidamente qué puertos están abiertos.
  • -sC : Escaneo con scripts básicos de reconocimiento.
  • -sV : Detección de servicios.
  • –min-rate 5000 : Escaneo no inferior a 5000 paquetes/segundo.
  • -n : Sin resolución DNS.
  • -Pn : Sin descubrimiento por ping.

Análisis del artefacto

El objetivo es analizar estáticamente una aplicación Android (APK) para identificar un PIN hardcodeado que controla el desbloqueo de la lógica interna.

jadx-gui pinbreaker.apk

Navegamos por el código descompilado hasta el paquete principal de la aplicación y revisamos la clase que implementa la lógica de validación del PIN.

Extracción del PIN

En la clase MainActivity localizamos la función encargada de validar el PIN. La comparación se realiza contra un valor estático embebido en el código.

echo "8524947156"

El valor obtenido corresponde al PIN correcto utilizado por la aplicación para desbloquear la funcionalidad.

Cálculo de la flag

La flag se obtiene calculando el hash SHA256 del PIN. Es crítico evitar caracteres de nueva línea para que el resultado sea correcto.

echo -n "8524947156" | sha256sum

El hash resultante se utiliza directamente como flag tanto a nivel de usuario como de root.


Deja una respuesta

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