AVILX

REVERSING WRITEUP · CRACKMES.ONE · 2026

nasm crack

Binario en Assembler puro — Password en texto claro

Autor retoBitFriends
Plataformacrackmes.one
Dificultad1.0 / 5.0
Arquitecturax86-64 — Unix/Linux
ModoNormal Mode — Análisis estático
AnalistaJesús Ávila (Avilx)
Fecha07 de Septiembre 2026
Portafolioavilx.dev
PASSWORD ENCONTRADO REVERSING · ASSEMBLY · CRACKME · x86-64

Documentación de aprendizaje en reversing | Entorno controlado

Información del Binario

Campo Valor
Nombrenasm_crack
TipoELF 64-bit LSB executable
Arquitecturax86-64
Enlazadostatically linked
Strippednot stripped
Stack CanaryNo Canary Found
NXNo GNU_STACK
PIEPIE Disabled
RELRONo RELRO
Nota
Este binario es statically linked, lo que significa que no depende de librerías externas. Todo el código está dentro del propio ejecutable. Además no tiene ninguna protección activa: sin canary, sin PIE, sin RELRO y sin NX. Es el binario menos protegido de los analizados hasta ahora. Fue escrito directamente en NASM (Netwide Assembler) sin pasar por un compilador de C.

Reconocimiento

Análisis inicial

Strings

$ strings -a ./nasm_crack | grep -v "^_Z\|GLIBC\|\.so\|\."

[Mensajes del programa]
Enter your password:
Correct!
Wrong!

[Strings sospechosos]
supersecret

[Variables/etiquetas del programa]
msg1
len1
correct
lenc
wrong
lenw
passwd
input
correct_func
Hallazgo
El comando strings reveló el password supersecret en texto completamente claro. Las etiquetas passwd, input y correct_func son nombres de etiquetas NASM del código fuente, visibles porque el binario no está stripped. El programa usa una función correct_func para validar el password.
Hipótesis
El password es supersecret. Al estar escrito en NASM puro, el password se almacena como un string literal en la sección de datos del binario, directamente accesible con strings. No es necesario analizar el assembly para resolver este crackme.

Ejecución inicial

$ ./nasm_crack
Enter your password: test
Wrong!

Solución

Password encontrado

supersecret
PASSWORD ENCONTRADO
$ ./nasm_crack
Enter your password: supersecret
Correct!
Hallazgo
El password supersecret fue verificado exitosamente. El programa respondió: “Correct!”

Reflexión Final

Qué salió bien

El reconocimiento inicial con strings resolvió el crackme de inmediato. Es el segundo crackme consecutivo resuelto con esta técnica, confirmando que siempre es el primer paso a ejecutar.

Lecciones aprendidas

Este crackme introduce una característica importante: es el primer binario statically linked analizado. A diferencia de los anteriores que dependían de librerías externas (libc, libstdc++), este contiene todo el código necesario dentro del propio ejecutable.

También es el primer binario escrito directamente en NASM sin pasar por un compilador de C. Las etiquetas del código NASM (passwd, correct_func, msg1) son visibles en los símbolos porque el binario no está stripped, lo que facilita enormemente el análisis.

La ausencia total de protecciones (sin canary, sin PIE, sin RELRO, sin NX) hace que este binario sea vulnerable a múltiples tipos de ataque además del password en claro.

Tiempo total

Fase Tiempo
Reconocimiento con strings5 minutos
Verificación2 minutos
Total7 minutos