Mecánica del ejercicio:
- No quedarnos con la información que vemos en el navegador: Inspeccionar el código fuente de la página web. Y la estructura de una petición/respuesta POST a un servidor.
- Investigar el viaje de los datos hasta llegar al servidor: ¿qué URLs se visitan?
- Comprender los cambios en las URLs (visibles y ocultos por redireccionamientos), y los efectos en nuestra computadora (que permiten identificar nuestra sesión).
Keywords: html, url, http, https, md5, cookie, scripting, https post request/response, https headers, https status code
Herramientas: python, web developer tools, wget, curl
Mecánica del ejercicio:
- Ejecutar binario. Probar con algunas entradas. Obtener información básica del ejecutable (file, string, readelf, objdump).
- Desensamblar el código.
- Identificar función principal y auxiliares.
- Identificar función de lectura de stdin.
- Identificar qué función imprime el mensaje de error y cuál el flag.
- Identificar qué parte de la función principal valida (que sea un hash) el input y cuál lo verifica.
- Debuggear. Forzar la ejecución hasta el bloque que realiza la verificación y entenderla.
Keywords: assembly, control-flow graph, convención de llamado a funciones, ABI.
Herramientas: debugger (gdb, ida, etc), disassembler (ida, oda, barf), graficadores del control de flujo (en inglés: control flow graph), file, strings, readelf, objdump.
Mecánica de los ejercicios:
Todos los ejercicios se basan en "encripción" con xor con clave de tamaño fijo de un byte de longitud.
- Identificar del modo de encripción/desencripción.
- Detectar la posible clave utilizada.
- Desencripción de los datos que puede derivar en la obtención del flag.
Keywords: xor, ECB, CBC, brute-force
Herramientas: python, file, bzip2