Solucionario propuesto por Andrés Bedoya (a.k.a @killr00t) al reto Security Challenge #CTF #Web + Premio: Libro Ethical Hacking 2.0, quien como siempre nos tiene acostumbrados ver en sus escritos un excelente nivel técnico y que ahora combina con un  magnífico video.

Como siempre animar y recordar a los recién iniciados y expertos a participar de estos desafíos, pues no hay mejor manera de aprender que enseñando…

Video solucionario al reto Security Challenge #CTF #Web por @killr00t

video

Documento Online

Solucionario propuesto por Fernando Quintero (a.k.a @nonrootal reto Security Challenge #CTF #Web + Premio: Libro Ethical Hacking 2.0.

Como siempre animar y recordar a los recién iniciados y expertos a participar de estos desafíos, pues no hay mejor manera de aprender que enseñando…

Felicitaciones a nonroot quien se convierte en el ganador del libro Ethical Hacking 2.0 de Héctor Jara y Federico Pacheco. Gracias además por compartir ese magnífico solucionario.

Aunque los solucionarios recibidos (que pronto estaré publicando también) no incluyeron el desarrollo de un exploit destaco el solucionario de nonroot debido a que evidencia muchos posibles puntos de intrusión, completamente aplicables no solo a este reto, sino a proyectos reales. Me gustó también los diferentes cuestionamientos que deja al final. Esto gracias a las experiencia recogida durante años en la profesión, sumado a los conocimientos y prácticas en el propio desarrollo de CTF’s. Para quienes no tenían conocimiento les comparto la lista dedicada exclusivamente al aprendizaje mediante el desarrollo conjunto de CTF’s. En este caso CTF Colombia.

Ahora que el solucionario ha sido liberado, dejo las correspondientes referencias del autor que desarrollo esté excelente Web CTF.

Anestis Bechtsoudis - Web oficial del CTF

Al final del solucionario dejo un exploit desarrollado por mr.pr0n que automatiza el proceso. Obviamente realizado una vez analizó en detalle la aplicación e identificó las fallas presentes en la misma.

///////////

Solución por nonroot:

La solución se va escribiendo en el mismo orden en que se van encontrando las cosas, puede parecer que la ruta era obvia y me desvío en otros asuntos, pero así funcionaba la mente en ese momento. La solución del reto me tomó 3 horas aproximadamente porque estuve pensando en posibles rutas que no me llevaron a ningún lado.

A. Lo primero como siempre es descargar la maquina del juego, chequear su integridad y buscar pistas en la descripción del reto que se publicó en el sitio web.

Link: http ://www.sec-track.com/security-challenge-ctf-web-premio-libro-ethical-hacking-2-0

SecTracker> md5sum Web_Sec_Challenge_Img.rar 328ddbf34e00d662ea4c89672dac29d3 Web_Sec_Challenge_Img.rar (OK)

SecTracker>

Pistas:

  • Una maquina linux (boot)
  • Servicio web corriendo en el puerto 8880 posiblemente (imagen del post introductorio)
  • Uso de MySQL (boot de la maquina)
  • Nombre de la maquina drunkadm (boot)

B. Hay que encontrar la maquina corriendo en la red local, un barrido de ping NO muestra maquinas activas en la red, es posible que la VM este filtrando.

SecTracker> fping -g 192.168.0.0/24
192.168.0.25 is alive
ICMP Port Unreachable from 192.168.0.152 for ICMP Echo sent to 192.168.0.152
192.168.0.159 is alive
192.168.0.160 is alive
ICMP Port Unreachable from 192.168.0.152 for ICMP Echo sent to 192.168.0.152
192.168.0.1 is unreachable 192.168.0.2 is unreachable

Si se observan los 3 tipos de respuesta con la utilidad fping, se pueden tener las maquinas que posibles.

“Is alive” la maquina esta activa y acepta los pings. “is unreachable” la maquina no esta disponible “ICMP port Unreachable” la maquina esta en otro estado (filtrada?), esta es nuestra candidata.

En mi caso la maquina mas sospechosa es 192.168.0.152. Veamos si tiene el puerto web (8880) abierto:

SecTracker> nmap -sS 192.168.0.152 -p 8880
Starting Nmap 5.61TEST4 ( http ://nmap.org ) at 2013-01-22 13:15 EST
Nmap scan report for 192.168.0.152
Host is up (0.00067s latency).
PORT STATE SERVICE 8880/tcp open cddbp-alt
MAC Address: 00:0C:29:26:4B:A8 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 11.36 seconds
SecTracker>

C. Entramos al sitio web y leemos el código fuente en busca de scripts php.

Observamos varios scripts php desde el source: info.php, index.php, upload.php, myphp.php

1

Empezamos a evaluarlos de forma básica:

  • index.php carga el sitio normal

2

 

El sitio permite subir imágenes que son desplegadas inmediatamente, las imágenes son almacenadas en el directorio /images/ sobre la raíz del sistema, mas adelante volvemos a esto.

  • upload.php requiere el envío de parámetros por POST

3

http :// 192.168.0.152:8880/myphp.php?id=101

Obtenemos información del sistema, al corrérle SQLMap contra este script nos dice que id no es una variable inyectable.

21:25:18] [WARNING] GET parameter ‘id’ is not injectable

4

Al cambiar valores del id, obtenemos diferentes respuestas, busquemos algunas mas:

SecTracker>for i in {1..10000}; do wget http ://192.168.0.152:8880/myphp.php?id=$i ; done

5

Obtenemos un resultado así:

SecTracker>ls -l

-rw-r–r–     1  root     staff     70 Jan 2 1 2 1:51 myphp.php?id= 1671
-rw-r–r–     1  root     staff     70 Jan 2 1 2 1:51 myphp.php?id= 1672
-rw-r–r–     1  root     staff     70 Jan 2 1 2 1:51 myphp.php?id= 1673
-rw-r–r–     1  root     staff     70 Jan 2 1 2 1:51 myphp.php?id= 1674
-rw-r–r–     1  root     staff     70 Jan 2 1 2 1:51 myphp.php?id= 1675
-rw-r–r–     1  root     staff     70 Jan 2 1 2 1:51 myphp.php?id= 1676

SecTracker>

Las respuestas con 70 bytes son las del mensaje de error, busquemos respuestas diferentes:

SecTracker>ls -la | grep -v “70 Jan”
total 10976
drwxr-xr-x 1346 root staff 45764 Jan 2 1 2 1:47 .
-rw-r–r–     1  root      staff 4598 Jan 2 1 2 1:47 myphp.php?id= 101
-rw-r–r–     1  root      staff 1326 Jan 2 1 2 1:47 myphp.php?id= 102
-rw-r–r–     1  root      staff 11012 Jan 2 1 2 1:47 myphp.php?id= 104
-rw-r–r–     1  root      staff 49949 Jan 2 1 2 1:47 myphp.php?id= 108
-rw-r–r–     1  root      staff 2031 Jan 2 1 2 1:47 myphp.php?id= 116
-rw-r–r–     1  root      staff 3475 Jan 2 1 2 1:47 myphp.php?id= 132
-rw-r–r–     1  root      staff 1867 Jan 2 1 2 1:47 myphp.php?id= 164
-rw-r–r–     1  root      staff 57314 Jan 2 1 2 1:47 myphp.php?id=99
SecTracker>

Según esto, los id 101, 102, 104, 108, 116, 132, 164 y 99 darán mensajes diferentes.

6

7

Con el id=132 logro identificar que la aplicación esta configurando cookies que pueden ser usadas para validar durante el proceso de upload de las imágenes …
Después de las pruebas me di cuenta que no funcionaba en ninguna validación, FAIL :)

8

D. Algo que intento en este punto es tratar de configurar una cookie “trypios” con diferentes valores. Ninguno de los valores configurados funcionó. FAIL :)

E. Lo que intento a continuación es validar la integridad de las imágenes que subo al sistema, para eso subo una imagen y luego la descargo para verificarla.

SecTracker>md5sum webchall*.png
9937c44d2c0f6a2f11240d8e2b 1069a0 webchall.png (Imagen que subo al sistema)
9937c44d2c0f6a2f11240d8e2b 1069a0 webchall2.png (Imagen que descargo del sistema)
SecTracker>

Con esto compruebo que el sistema conserva la integridad de las imágenes que se suben, pero lo que me llama la atención es el nombre de la imagen cuando sube al sistema, tiene cara de MD5 :P

Lo primero que intento es generar el hash MD5 de las imágenes que subo al sistema para compararlas con sus respectivos nombres cuando se almacenan, pero los valores no corresponden, entonces empiezo un proceso manual para intentar identificar un patrón.

a.jpg 394659692a460258b45a99f1424ea357.jpg
a.png 32d3ca5e23f4ccf1e4c8660c40e75f33.png
a.gif a7200b4bac77e8804f9e48304a92b6d9.gif
a.jpeg 14a53cac5a312f3d1ad4980fec051d42.jpeg
b .jpg efaf98db2eac3a61946ca0282ae6ddd4.jpg

Los nombres que aparecen en el sistema corresponden a los valores MD5 de los nombres de las imágenes que se suben :

SecTracker>echo -n “a.jpg” | md5sum
394659692a460258b45a99f1424ea357 –
SecTracker>echo -n “a.png” | md5sum
32d3ca5e23f4ccf1e4c8660c40e75f33 –
SecTracker>echo -n “a.gif” | md5sum
a7200b4bac77e8804f9e48304a92b6d9 –
SecTracker>

F. Descargo un shell en php con la intención de hacerlo pasar por una imagen.

El shell lo pueden descargar desde aquí:
http://xploitaday.komodin.org/tools/php-encoder/

9

 

G. Como paso siguiente intento subir un shell en php al sistema, pero obtengo un error relacionado con la extensión que uso en el nombre del archivo.

10

H. Intento camuflar la extensión del shell usando una doble extensión y genero el MD5 en caso de que suba al sistema.

SecTracker>cp shell.php shell.jpg.php
SecTracker>echo -n “shell.jpg.php” | md5sum
809d9ef057f63c676e 1d78dbb7a43826 –
SecTracker>

I. Subo el archivo shell.jpg.php al sistema y no se visualiza ninguna imagen, pero tampoco se genera un error, entonces intento cargar el archivo .php en el directorio /images/.

11

Con esto tenemos el shell web dentro del sistema.

12

J. Una vez dentro del sistema empiezo a buscar información como por ejemplo identificar la versión del kernel, verificar si el sistema tiene netcat, gcc, etc.

13

También busco los usuarios en /home y me encuentro con un usuario bob, como es el único usuario pareciera que tiene algo que ver con el reto.

14

 

Los scripts que están en el home del usuario bob requieren de una palabra secreta, cualquier palabra se puede usar pero no producen resultados coherentes (texto plano legible).

15

K. Sigo explorando buscando las posibilidades de comunicación del usuario bob, por eso intento encontrar archivos que tengan la palabra bob y termino entrar al inbox de correo del usuario en /var/mail/, sin embargo no tengo los permisos para poder leer los archivos, pero sospecho que el usuario puede tener mensajes que ayudan a resolver el tema. FAIL :)

16

17

L. Al no encontrar mucha información por este lado intento abrir puertos en la maquina para conectarme desde la consola (netcat).

18

Los puertos siguen apareciendo filtrados, lo intento con varios puertos pero obtengo el mismo resultado, por lo que pienso que el sistema debe tener el ip tables habilitado. Buscamos las reglas que deben cargar al inicio del sistema. En /etc/init.d/ encontramos que el archivo firewall.sh tiene permisos modificados y no puedo leerlos, pero eso me da indicios que seguramente si hay un firewall filtrando la salida y entrada de paquetes en puertos diferentes al 22/TCP y al 8880/TCP. FAIL :)

19

M. Ya un poco perdido con el asunto empiezo a probar exploits locales (exploits*.c) contra el kernel, exploits contra phpinfo(), contra apache, contra todo lo que se aparezca y nada, no logro escalar privilegios en el sistema, entonces pienso que quizá no sea necesario ya que el reto se trata de una aplicación web. FAIL :)

20

 

21

 

N. Vuelvo a la raíz del servidor web a leer detalladamente los archivos que se encuentran allí y veo un archivo que no había visto antes, el archivo /var/www/.proof .

22

En este archivo se menciona un código secreto, así que supongo que es el código del usuario bob.

O. Pruebo el código en el sistema y NO obtengo resultados correctos.

23

24

¿Será que el código está en base64?

SecTracker>echo -n “TGglMUxecj JDSDclN 1Ej ” | base64 -d
Lh%1L^r2CH7%7Q#
SecTracker>

WIN :)

25

 

26

P. El lugar donde se van a encontrar Alice y Bob es Akti Tompazi 4 , como se puede ver en la siguiente imagen de googlemaps donde se usaron las coordenadas encontradas.

27

Con esto se termina el reto, pero aún quedan cosas pendientes por investigar:

TODO: COSAS POR HACER

1. Escalar privilegios en el sistema (#).
2. Encontrar las claves de los usuarios root y bob.
3. Examinar si el servicio MySQL (127.0.0.1) tiene información.
4. Examinar si el servicio EXIM (127.0.0.1) tiene información o es vulnerable.
5. Buscar otra forma de explotar el sistema web (vulnerabilidad diferente).
6. Verificar si las librerías de AES usadas para cifrar el mensaj e de bob tienen algún bug introducido que permita romper el cifrado de forma diferente.
7. Identificar el motivo por el cual el archivo .php que se sube en el directorio /images/ del sistema se elimina cada cierto tiempo.

Si tienen alguna duda sobre el solucionario pueden escribir a: fernando.a.quintero (at) gmail (dot) com o contactarme por twitter en: @nonroot

Gracias por el reto!

/////////////////////

Exploit from mr.pr0n

PDF Online:


 

Security Web Hacking Challenge es un corto pero entretenido reto de seguridad en aplicaciones Web, que nos desafía a vulnerar un sistema hecho a la medida para el almacenamiento de imágenes.

El objetivo del reto es analizar en detalle el sistema de hosting de imágenes, enumerar características y funcionalidades del mismo y por supuesto identificar vulnerabilidades que nos permitan leer archivos ocultos en el sistema. No quiere decir esto, que la vulnerabilidad se trate de un LFI o Source Disclosure (aunque pueden existir) sino que una vez logremos identificar la vulnerabilidad (que pueden ser varias) y explotarla debemos escalar privilegios (o simplemente interactuar con los existentes) para leer información confidencial almacenada en el servidor objetivo.

La información precisa a identificar es un mensaje oculto entre dos personas. Precisamente la información sobre una cita entre ambas.

Para configurar el entorno del reto solo basta con descargar el archivo comprimido con la imagen VMWare del sistema. Descomprimir y ejecutar mediante VMWare Player, WorkStation, Fusion, etc… El servidor ya viene configurado para trabajar bajo DHCP, por lo tanto nos asignará de manera automática la IP objetivo. Uno de los primeros retos será identificar el mismo mediante un barrido PING. Asimismo debemos identificar el puerto de la aplicación Web destinada al almacenamiento de imágenes. Desde allí solo queda cumplir con los objetivos del reto.

Gracias a la Corporación El HackLab premiaré al mejor solucionario con el libro Ethical Hacking 2.0 El premio SOLO aplica para Colombia, pero igual bienvenidos todos los participantes de otros países. El solucionario ganador será el mejor elaborado de los recibidos. Esto puede implicar aspectos como la solución más creativa, diferentes vulnerabilidades en el mismo sistema, desarrollo de un exploit para la automatización de la explotación, etc…

El reto comienza desde  17-01-2013 hasta 25-01-2013.

El reto realmente no es complejo… Lo clasifico en un nivel básico-medio. Por lo tanto son bienvenidas todas las personas que recién están comenzando y las que llevan ya su tiempo :)

Pueden enviarme los solucionarios a 4v4t4r (AT) gmail (DOT) com

Descargar Security Challenge CTF Web (md5: 328ddbf34e00d662ea4c89672dac29d3)

Nota importante: El reto fue publicado hace varios meses por su autor original. Aun no publico la información relacionada para que traten de realizar el mismo sin información adicional o solucionarios.

Mucho éxito y have fun!!!

Solucionario propuesto por @killr00t al reto SAURON nivel Hard@killr00t cumplió con el objetivo del desafío: Realizar un solucionario diferente a los publicados en internet (aunque en este solo había público uno para el nivel fácil), hacerse root del server y mostrarlo de manera didáctica.

Como siempre animar y recordar a los recién iniciados y expertos a participar de estos desafíos, pues no hay mejor manera de aprender que enseñando…

Felicitaciones a @killr00t quién se convierte en el ganador de una tarjeta Amazon gift por un valor de $30 usd. Además que fue el único que envió solucionario de los 33 que descargaron el entorno…  Se concluyen varias cosas… Entre ellas que el entorno no estaba fácil, y que muchos acostumbran a realizar los solucionarios basados en los ya publicados (no está mal del todo) Pero el ideal es intentarlo por si mismo… Como vimos que hizo Killr00t ;)

Mucho ánimo, pues en unos días presento otro reto igualmente premiado gracias a la corporación ElHackLab.

Descargar solucionario (pdf) >>

Ver en línea:

Estas son las slides actualizadas y empleadas en varias sesiones de ElHackLab presencial correspondiente al desarrollo del CTF6 LAMP Security. El objetivo de publicarlas, es dar a conocer un poco más el proyecto y compartir parte del material que se desarrolla en conjunto en cada una de las reuniones.

Aunque bien es cierto la presentación no detalla textualmente cada una de las fases (pues están desarrolladas para servir simplemente de guía en el laboratorio) si permiten seguirlo fácilmente con la simple interpretación (más de 100 slides)… Sobra decir que cualquier duda pueden hacérmela llegar por este medio, así como otros métodos de solucion…

Intenté cubrir cada uno de los posibles puntos de intrusión… Y sin embargo estoy seguro que habrán mucho más… Pues precisamente, el entorno está desarrollado para ofrecer diferentes opciones para cumplir con los objetivos.

Espero sea de utilidad el material y puedan utilizarlo como guía para otros entornos…

Solucionario del LAMPSecurity: CTF 6 Challenge por [Q]3rV[0]

Posted by 4v4t4r On julio - 16 - 2012

Nuestro amigo [Q]3rV[0] del Blog UnderTerminal nos comparte también su propuesta de solucionario para el pasado reto LAMP Security CTF 6.

Aunque no alcanzó completar todos los objetivos del desafío (hacerse root del sistema, y explicar de manera más didáctica el paso a paso de lo realizado) si tiene su merito por lo elaborado en el documento (muy buena la técnica de generar el UpLoad File desde MySQL – INTO OUTFILE, cuando se tiene permisos) y por supuesto lo más importante: compartir conocimiento.

Felicitaciones y muchas gracias a [Q]3rV[0]… Espero sigas participando en los demás desafíos ;) Y vayas mejorando y poniendo en práctica otras técnicas…

Dejo a continuación el solucionario y claro está, la invitación a que visiten su blog. (UnderTerminal)

“Nuevo” reto y entorno de entrenamiento en seguridad… Con comillas, pues hace algunos años utilicé y publiqué dicho desafío desde la gente de SG6Labs, en lo que dí a conocer como los HackTalleres y DragonLabs en su momento (2008).

El desafío consiste en realizar el PenTest y obtener root en el sistema (CTF), idéntico que el reto anterior… Alguna vez publiqué algunos videos de realización del entorno, pero en su nivel de dificultad medio… La idea será realizar este entorno, pero en su nivel de dificultad más alto… También quienes alcanzaron asistir a uno de los HackLabs, pudimos realizar algunos niveles del mismo… El objetivo será utilizar diferentes técnicas a las vistas en ambos escenarios.

Una vez más la corporación ElHackLab apoya la iniciativa con un mini premio de $30 usd en una tarjeta de regalo de Amazon a la persona que me envíe un muy buen solucionario, orientado obviamente a enseñar, como en cada solución publicada desde el proyecto por cada uno de los colaboradores, investigadores y consultores independientes.

La finalidad como en cada reto que planteo es la de siempre: Compartir y generar conocimiento.

La metodología para participar es bien sencilla. Una vez publicado el reto tendrán 5 días para realizar el solucionario (bien sea un write-up, video, walkthrough, etc) y enviarlo a la dirección electrónica info (en) hacklab (punto) com (punto) co. Apenas termine este tiempo contactaré a algunos profesionales y amigos que no estén participando y quieran ayudarme con la selección del mejor solucionario. Una vez establecido el ganador enviaré por email la tarjeta electrónica de Amazon y publicaré por supuesto este y los demás solucionarios recibidos…

Aclarar varias cosas: No se calificará estilo “mejor reporte”, pues la finalidad no es preparar academicamente a los participantes en la generación de reportes técnicos y/o ejecutivo en un PenTest (para esto podemos habilitar otros espacios y desafíos) la calificación estará basada en la creatividad, originalidad y complejidad de las técnicas y tácticas utilizadas. Y por supuesto en la manera amigable de transmitir esas ideas, para que los recién iniciados podamos seguir dichos documentos… En definitiva como en cada reto, el objetivo es ponernos a prueba, pasar un rato agradable y claro está: compartir…

El reto consiste en una aplicación web presuntamente vulnerable. Para habilitar el entorno solo basta con DESCARGAR LA IMAGEN lista para ser ejecutada desde QEMU. A diferencia de muchos otros entornos la máquina objetivo viene configurada para trabajar en la IP 192.168.200.2. Por ello necesitamos asignar manualmente el segmento de red a una tarjeta virtual (OpenVPN).

Para obtener más información sobre el proceso de configuración de la máquina objetivo pueden descargar los manuales para Windows y Linux. También desde la Wiki de Sec-Track.

Descargar SAURON Hard (Dificultad Alta), CTF Challenge. 

(SHA-1: b41c41e0e716569eb8588e30411a310e748be446)

Solucionario propuesto por @killr00t al reto LAMPSecurity: CTF 6. @killr00t cumplió con el objetivo del desafío: Realizar un solucionario diferente a los publicados en internet, hacerse root del server y mostrarlo de manera didáctica (aunque le faltaron algunas explicaciones en este apartado).

Como siempre animar y recordar a los recién iniciados y expertos a participar de estos desafíos, pues no hay mejor manera de aprender que enseñando…

Felicitaciones a @killr00t quién se convierte en el ganador de una tarjeta Amazon gift por un valor de $30 usd. Gracias también a todos los que participaron y enviaron sus solucionarios, estoy organizando los mismos y seleccionando los mejores para publicarlos. También invitarlos a que aun sin premio realicen el reto, pues no solo existe una manera de solucionarlo ;)

Mucho ánimo, pues en unos días presento otro reto igualmente premiado gracias a la corporación ElHackLab.

Veamos el solucionario (online):

The Hacker Games no es un CTF similar a muchos que ya hemos publicado… No, lo innovador de este desafío es que además de que debes apoderarte de los 10 memes (así como lees… estas serán las banderas :D ) debes estar preparado para ser contra-atacado por la misma máquina objetivo. Esto tal cual como si estuviéramos participando en un Wargame contra otros equipos, solo que la máquina ha sido preparada para automatizar ciertos ataques bajo ciertas peticiones… Aquí el autor nos advierte de que no debemos sorprendernos si se nos abre nuestra calculadora o vemos un mensaje diciéndonos que hemos sido “Pwn34d0s”.

La genial idea es de @scriptjunkie1 (http://www.scriptjunkie.us/about/), quién el año pasado presentó en BlackHat Counterattack: Turning the tables on exploitation attempts from tools like Metasploit.

La máquina “objetivo”-”contra/atacante” es presentada en formato para VirtualBox… Tan solo necesitamos descargarla y abrirla directamente desde el file TheHackerGames.vbox.

Una vez realizado este proceso comienza el desafío… Para ello ingresaremos a http://localhost:3000/

Cuando pasa el tiempo y no hacemos nada, pues vamos pensando en nuestra estrategia (mientras dejé abierta la URL) e iba escribiendo el post fui redirigido a:

Intentos simples de identificación de fallas SQLi (‘or”=’)

jejeje… el desafío promete… y mucho ;)

Dejo a continuación el texto original de @scriptjunkie1 y el enlace de descarga directa del desafío

Descargar The Hacker Games >>

Hace casi una semana que publiqué el 4° desafío Kioptrix. El día de ayer mi gran amigo Mohamed Ramadan de Egipto y autor del entrenamiento especializado en Pentesting conocido como Penetration Test Training – Codename: Samurai Skills del cual además soy co-autor (luego publicaré en detalle, pues actualmente nos encontramos trabajando en unos nuevos módulos y la plataforma Online de pruebas reales ;) ) me envió su propuesta de solucionario…

Nada más que decir… Solo disfrutar aprendiendo con las técnicas mostradas por Mohamed desde Egipto :) por medio de un video de más de una hora de duración, pues detalla paso a paso cada uno de los procedimientos.

Kioptrix4 (level 1.3 ) Detailed Walk-through by (Ninja-Sec.com) from mohamed ramadan on Vimeo.

En la wiki de sec-track realicé el transcript del video. para quienes prefieran seguir desde el texto el solucionario… Sobra decir que es un Spoiler… Por lo tanto NO lo mires sin intentarlo antes!