Cyber Security Academy · Lección

Retos web y de criptografía

Resuelva acertijos habituales de web y criptografía.

Lección 2 de 413 pasos

Retos web y de criptografía es una lección gratuita de Cyber Security Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cyber Security Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cyber Security Academy incluye 4 lecciones en total.

Dos pilares: web y criptografía

Web y criptografía son los dos puntos de entrada más comunes a los CTF.

  • Los desafíos web le proporcionan una aplicación web en ejecución y le piden encontrar un fallo en la forma en que gestiona las entradas, la autenticación o la confianza.
  • Los desafíos de criptografía le proporcionan texto cifrado, un esquema y, a veces, código fuente, y le piden recuperar el texto plano o una clave aprovechando un fallo en el uso de la criptografía.

Ambos premian la observación metódica. Esta lección aborda los rompecabezas recurrentes de cada categoría.

Primer paso ante un objetivo web

Antes de explotar nada, haga un mapa de la aplicación. Consulte el código fuente, inspeccione las respuestas y explore el contenido oculto.

# Inspect raw response headers and body
curl -i http://target/

# Look for hidden paths the UI does not link to
gobuster dir -u http://target/ -w wordlist.txt

# Common files worth checking by hand
# /robots.txt  /.git/  /backup.zip  /admin

Inyección SQL

La inyección SQL se produce cuando la entrada del usuario se concatena en una consulta de base de datos sin separar el código de los datos.

Un inicio de sesión que construye una consulta como SELECT * FROM users WHERE name='INPUT' puede manipularse mediante una entrada que cierre la cadena y altere la lógica:

# A classic auth-bypass payload supplied as the username
' OR '1'='1' -- 

# UNION-based extraction once the column count is known
' UNION SELECT username, password FROM users -- 

La solución real para la inyección

Los CTF le enseñan a romper la inyección para que pueda prevenirla. La defensa correcta consiste en utilizar consultas parametrizadas (sentencias preparadas), que mantienen los datos del usuario completamente fuera de la estructura de la consulta.

# Vulnerable: input becomes part of the SQL text
query = "SELECT * FROM users WHERE name='" + name + "'"

# Safe: input is bound as a parameter, never parsed as SQL
cursor.execute("SELECT * FROM users WHERE name = ?", (name,))

Cross-Site Scripting (XSS)

El XSS se produce cuando una aplicación refleja o almacena una entrada controlada por el atacante y un navegador la ejecuta como script. En CTF, un desafío de XSS suele implicar un bot que visita su payload mientras conserva la flag en una cookie.

  • Reflejado — la carga útil de la solicitud se devuelve directamente.
  • Almacenado — la carga útil se guarda y se ejecuta para visitantes posteriores.
  • Basado en DOM — el JavaScript del lado del cliente escribe la entrada en la página de forma insegura.

La defensa consiste en codificar la salida según el contexto, además de utilizar una Content-Security-Policy. Una prueba como <script>alert(1)</script> confirma si la entrada se escapa.

SSRF y recorrido de rutas

Otros dos elementos básicos de la seguridad web:

  • Falsificación de solicitudes del lado del servidor (SSRF) — engaña al servidor para que realice solicitudes en su nombre, a menudo a direcciones de uso interno como http://127.0.0.1 o a un endpoint de metadatos de la nube, con el fin de acceder a la flag.
  • Recorrido de rutas — sale del directorio previsto mediante secuencias como ../ para leer archivos fuera de la raíz web, por ejemplo ../../../../etc/passwd.

Ambos problemas se deben a confiar en la entrada del usuario para elegir un recurso. Las defensas consisten en listas de permitidos estrictas y en canonicalizar las rutas antes de validarlas y utilizarlas.

La codificación no es el cifrado

La trampa criptográfica más común para principiantes es confundir la codificación con el cifrado. La codificación puede revertirla cualquiera sin necesidad de una clave, por lo que no proporciona ninguna confidencialidad.

Aprenda a reconocer los formatos a simple vista:

  • Base64 — letras, dígitos, + / y, a menudo, relleno =.
  • Hex — solo 0-9 a-f.
  • ROT13 / Caesar — estructura legible y letras desplazadas.
# Decode base64
echo 'ZmxhZ3toZWxsb30=' | base64 -d

# Decode hex
echo '666c6167' | xxd -r -p

Cifrados clásicos y XOR

Muchos desafíos de criptografía utilizan cifrados históricos débiles o cifrados modernos implementados de forma descuidada:

  • Caesar / Vigenere — cifrados por desplazamiento que se rompen mediante análisis de frecuencia o probando los 25 desplazamientos.
  • XOR de un solo byte — todo el mensaje se combina mediante XOR con un solo byte; pruebe por fuerza bruta las 256 claves y elija la salida legible.
  • XOR con clave repetida — se rompe encontrando la longitud de la clave y resolviendo después cada byte de la clave como un XOR de un solo byte.

La lección es clara: una cifra personalizada o clásica no ofrece seguridad real frente a un analista.

Trampas de RSA

RSA solo es seguro cuando sus parámetros se eligen correctamente. Los CTF de criptografía suelen presentar una instancia defectuosa:

  • Módulo pequeño — si n es lo bastante pequeño, factorícelo directamente para recuperar la clave privada.
  • Exponente diminuto, sin relleno — con e=3 y un mensaje corto, el texto cifrado puede ser un cubo perfecto que se puede recuperar mediante una raíz cúbica entera.
  • Factores compartidos — si dos claves públicas comparten un primo, el máximo común divisor de sus módulos lo revela al instante.

La defensa en el mundo real: utilice una biblioteca validada, con claves grandes y un relleno adecuado (OAEP); nunca implemente la criptografía por su cuenta.

Cracking de hashes

Cuando un reto le proporciona el hash de una contraseña, el objetivo es recuperar la entrada original. No puede invertir un hash, pero sí probar entradas y compararlas.

# Identify the hash type first
hashid 5f4dcc3b5aa765d61d8327deb882cf99

# Dictionary attack with hashcat (mode 0 = raw MD5)
hashcat -m 0 hash.txt rockyou.txt

# John the Ripper alternative
john --wordlist=rockyou.txt hash.txt

Un flujo de trabajo repetible

Integre todo mediante un ciclo coherente para ambas categorías:

  • Observe — lea el enunciado, consulte el código fuente e identifique la codificación o el esquema.
  • Formule hipótesis — determine la familia de vulnerabilidades más probable.
  • Haga una prueba pequeña — envíe una carga útil de prueba y observe la respuesta exacta.
  • Explote — convierta la prueba que funciona en una carga útil completa que proporcione la flag.
  • Documente — registre la carga útil y el razonamiento mientras los tenga frescos.

Este ciclo evita que se pierda en callejones sin salida y produce un informe casi sin esfuerzo adicional.

Comprobación rápida

Compruebe sus conocimientos fundamentales sobre la web y la criptografía.

Repaso

Ha estudiado los retos recurrentes de web y criptografía:

  • Web: haga primero un mapa y después busque inyección SQL, XSS, SSRF y path traversal; todos se basan en confiar de forma insegura en la entrada del usuario y se solucionan separando el código de los datos.
  • Criptografía: distinga codificación de cifrado, rompa cifrados clásicos y XOR débiles, aproveche errores en los parámetros de RSA y crackee hashes con listas de palabras.
  • Un único ciclo de observar, formular hipótesis, probar, explotar y documentar funciona para ambas.

A continuación, pasará a la ingeniería inversa y la explotación de binarios.

Gratis para empezar

Aprende Cyber Security Academy con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
76
Lecciones
303

Preguntas frecuentes

¿La lección «Retos web y de criptografía» es gratis?

Sí — el texto completo de «Retos web y de criptografía» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cyber Security Academy, actualiza a CoddyKit PRO. El curso de Cyber Security Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Retos web y de criptografía»?

Resuelva acertijos habituales de web y criptografía. Practicas Cyber Security Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Cyber Security Academy?

No se requiere experiencia previa. Cyber Security Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Retos web y de criptografía»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Cyber Security Academy?

Sí. Cada lección de Cyber Security Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Categorías y mentalidad de los CTF
  2. Retos web y de criptografía
  3. Fundamentos de reversing y pwn
  4. Herramientas y writeups
← Volver a Cyber Security Academy