8dot8 2018 CTF Writeup

Claudio Salazar
alertot
Published in
3 min readOct 30, 2018

El pasado fin de semana se realizó una nueva edición de 8dot8, la conferencia de seguridad más importante de Chile. Había un CTF organizado por la gente de HackAFlag, donde finalizamos en el primer lugar.

Gabriel Bergel con Eduardo Zamorano y Guillermo Chirino, CFO de alertot.

En esta competencia estrenamos nuevo integrante en el equipo, Daniel Aldana (chcx), compañero en Pinguinux y en el mundo de la seguridad desde finales de los 90, fue quien me ayudo a dar mis primeros pasos en seguridad allá por el 2003 cuando estabamos en el liceo.

Aquí les compartimos un breve writeup sobre los challenges web y de programación que resolvimos.

Desafíos web

Desafío 1

La página en PHP aceptaba subida de ficheros, con un nombre de fichero arbitrario definido por nosotros. Luego, ejecutaba en la shell una operación de forma insegura usando el nombre de nuestro fichero, permitiendo la inyección de comandos a través del nombre, tal como en image;ls -l;.jpg .

Desafío 2

chcx, escribió un completo writeup sobre este desafío en su blog.

Desafío 3

La página en PHP recibía un argumento que era pasado a la función eval. Sin embargo, había una lista negra que negaba el uso de las funciones más populares para ejecutar comandos, leer/escribir ficheros, etc.

Nuestro bypass fue usar backticks.

Desafío 4

La página en PHP aceptaba subida de ficheros pero tenía un WAF que:

  1. Eliminaba php del nombre de fichero.
  2. Sobreescribía <? o <?php con el valor keerok .

Para poder superar estas restricciones, se creo un fichero con nombre oc.pphphp y como contenido:

<script lenguage=’php’>
echo system($_GET[“cmd”]);
</script>

Desafíos programación

Los desafíos los resolvimos medianamente rápido y llegamos a los problemas de programación. Estos problemas eran estilo ACM ICPC o Google Code Jam, así que necesitabamos fuerzas especiales. Hora de hablar con nuestro CTO Sebastián, el ex-NASA que tanto mencionamos en nuestro pitch de startup.

Con Sebastián discutiendo con nuestro coach Roberto Bonvallet (ACM ICPC 2009)

En 2009, con Sebastián y Manuel Almuna representamos a la UTFSM en la competencia nacional de programación (ACM ICPC 2009, team “The overloaded operators”) y obtuvimos el segundo lugar, aceptable para menos de tres semanas de preparación. Así que él era el indicado para solucionar este problema.

En general los problemas tenían 2-3 ejemplos cortos y luego 50 tests. Sebastián desarrolló una solución que funcionó hasta el test 20, luego se debió optimizar y logró llegar hasta el test 40 y la última iteración superó el test 50 y obtuvo la flag.

Un servicio de red entregaba el número de puntos de un polígono y se debía responder el número de caminos que conectaba todos los puntos en menos de 3 segundos. La lógica y la elegancia de la solución final es la siguiente:

En el segundo problema, chcx llego hasta el caso 20 y por tiempo no pudimos seguir buscando nuevas formas para lograr resolverlo completamente.

--

--