← Volver al listado de tecnologías

Leviathan Nivel 3 - Comparación de Strings

Por: SiempreListo
overthewireleviathanstrcmpltracenivel-3

Leviathan Nivel 3 - Comparación de Strings

Objetivo

Similar al nivel 1, hay un binario level3 que pide contraseña.

Exploración

ls -la
./level3
# Enter the password>

Solución

Usa ltrace como en el nivel 1:

ltrace ./level3

Ingresa cualquier texto y observa la llamada a strcmp().

strcmp("tu_input", "snlprintf\n")

Ejecuta nuevamente con la contraseña correcta y obtendrás shell como leviathan4.

cat /etc/leviathan_pass/leviathan4

Teoría: strcmp() y Seguridad

Cómo Funciona strcmp

int strcmp(const char *s1, const char *s2);

Problema de Seguridad

Comparar contraseñas en texto plano es vulnerable a:

  1. Análisis dinámico (ltrace)
  2. Análisis estático (strings, objdump)
  3. Timing attacks (medir tiempo de comparación)

Práctica Segura

// Inseguro
if (strcmp(input, "secret") == 0) { ... }

// Mejor (hash)
if (verify_hash(input, stored_hash)) { ... }

Por Qué ltrace Funciona

  1. Linking dinámico: El programa usa libc
  2. ltrace intercepta: PLT (Procedure Linkage Table)
  3. Muestra argumentos: Incluye strings comparados

Protecciones Posibles

TécnicaEfectividad
Compilación estáticaDificulta ltrace
OfuscaciónSolo retrasa
Anti-debuggingPuede ser evadido
No almacenar en texto planoCorrecto

Comandos Aprendidos

ComandoUso
ltraceInterceptar strcmp
stringsVer strings en binario

Siguiente Nivel