Esta habitación presenta 20 tareas sencillas que suelen aparecer en escenarios de captura de banderas, de modo que podemos practicarlos.

A menos que se especifique otra cosa, todas las banderas tienen este formato: THM{flag}

¿Puedes decodificar esto?

VEhNe2p1NTdfZDNjMGQzXzdoM19iNDUzfQ==

Es Base64 y uso cualquier decodificador online.

THM{ju57_d3c0d3_7h3_b453}

Hay un archivo jpg, el título de la tarea dice meta, meta, meta. Analizo los datos Exif con la primera herramienta online que aparece y la bandera está en la parte del dueño.

THM{3x1f_0r_3x17}

En la siguiente tarea hay una imagen que al parecer contiene algo escondido. Se trata de estenografía, así que trato de extraer qué es:

steghide extract -sf -Extinction.jpg

Estrae un archivo de texto y lo leemos para conseguir la bandera.

THM{500n3r_0r_l473r_17_15_0ur_7urn}

La siguiente tarea dice: ¿Eh, dónde está la bandera? Está escrita con fuente del mismo color que el fondo, si seleccionamos después de la pregunta, aparece.

THM{wh173_fl46}

La siguiente tarea nos hace descargar un código QR que contiene la bandera. Lo leemos con cualquier herramienta online.

THM{qr_m4k3_l1f3_345y}

Esta tarea nos hace descargar un archivo que no es de texto. El título dice reverse or read it. Si le paso el comando:

strings hello.hello

Entre las cadenas de texto legibles aparece la bandera.

THM{345y_f1nd_345y_60}

La siguiente bandera está codificada en 3agrSy1CewF9v8ukcSkPSYm3oKUoByUpKG4L y la pista da la clave con Base58. Eso que me ahorra.

Me voy a un decodificador online.

THM{17_h45_l3553r_l3773r5}

Esta prueba dice en su texto: izquierda, derecha, izquierda, derecha, ROT13 es demasiado popular.

Y nos da esta bandera MAF{atbe_max_vtxltk} con la pista de que es un cifrado César. Lo decodifico por fuerza bruta en dcode.fr y me da que funciona el +19.

THM{hail_the_caesar}

La tarea 10 nos dice que hagamos un comentario, y que no hay archivo descargable, ni texto codificado.

Inspecciono el elemento con Firefox y aparece un párrafo con el atributo de css display:none y que contiene la bandera.

La pista nos decía que analizáramos el código html.

THM{4lw4y5_ch3ck_7h3_c0m3mn7}

La siguiente tarea nos hace descargar un archivo de imagen PNG y nos dice que accidentalmente lo han estropeado, si podemos arreglarlo.

Efectivamente, el archivo no aparece al intentar abrirlo. Debe ser cosa de los números mágicos del principio del archivo. Lo abrimos con un editor hexadecimal.

hexeditor spoil.png

La pista también nos dice que miremos el encabezado.

Si miramos en Wikipedia la lista de firmas de archivos, efectivamente los 4 primeros números están cambiados, así que ponemos los correctos: 89 50 4E 47.

Guardamos y de esa manera ya se nos abre la imagen con la bandera:

THM{y35_w3_c4n}

La siguiente bandera está en una red social, el título es read it y la pista dice Reddit, así que ya sabemos adónde ir.

Buscando en Google:

site:reddit.com ctf vol 1 flag thm “read it” me sale el post que anuncia esta habitación y la bandera.

THM{50c14l_4cc0un7_15_p4r7_0f_051n7}

Esta tarea dice Spin my head y aparece esto, que me suena un montón y ya me he encontrado alguna vez:

++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>++++++++++++++.————.+++++.>+++++++++++++++++++++++.<<++++++++++++++++++.>>——————-.———.++++++++++++++.++++++++++++.<++++++++++++++++++.+++++++++.<+++.+.>—-.>++++.

Es código brain fuck y lo decodifico en dcode.fr para obtener la bandera.

THM{0h_my_h34d}

La tarea que hay a continuación dice «Exclusive strings for everyone» y hay dos cadenas:

S1: 44585d6b2368737c65252166234f20626d S2: 1010101010101010101010101010101010

La pista dice S1 XOR S2.

La herramienta online que funciona está aquí:

https://toolslick.com/math/bitwise/xor-calculator

Pegamos las dos líneas, en orden y una debajo de la otra, y vamos mirando en los resultados hasta que vemos la solución en ASCII, está al revés, así que la ponemos bien antes de pegarla.

echo }r0_3v15ulcx3{MHT | rev

THM{3xclu51v3_0r}

Binary walk nos dice que extraigamos la bandera aplicando binwalk al archivo descargable que nos proporcionan.

Vemos que aparece un archivo hello_there.txt comprimido a partir de la dirección 0x40E75 hasta la 0x40F73.

Bien, podemos extraerlo con el comando dd ya que sabemos su dirección.

dd skip=$((0x40E75)) if=hell.jpg of=hell.zip bs=1
  • skip nos sirve para saltar a la posición, y si queremos ponerla tal y como aparece en binwalk, ha de ser entre $(())
  • if es Input File, el archivo con el que trabajamos.
  • of es Output FIle, el archivo que extraeremos.
  • bs es block size, que ponemos a 1.

De esa manera nos extrae un zip, lo descomprimimos y obtenemos la bandera.

Si no usamos Binwalk, podemos averiguar «artesanalmente» dónde empieza el zip buscando PK, que son las iniciales de Phil Katz, creador del zip. Nos ponemos ahí y sacamos la posición que pasarle a dd.

La siguiente prueba nos dice que hay algo acechando en la oscuridad, es un png en negro y la pista dice que probemos con stegsolve.

Ese programa ataca por «fuerza bruta» probando un montón de filtros y similares de color para encontrar la bandera, de modo que no hay que hacerlo manualmente.

Podemos instalar stegsolve desde aquí:

Una vez instalado, lo ejecutamos, seleccionamos la imagen y vamos dándole a las flechas para que vaya probando modos. Cuando llega a Blue Plane 0, aparece la bandera.

THM{7h3r3_15_h0p3_1n_7h3_d4arkn355}

El siguiente desafío es un QR sonoro y hay que averiguar qué dice el bot y ponerlo en mayúsculas dentro de THM{LO_QUE_DIGA}

El QR nos lleva a un archivo de souncloud.

THM{SOUNDINGQR}

Desenterrar el pasado es el título de lo siguiente.

Targetted website: https://www.embeddedhacker.com/ Targetted time: 2 January 2020

Nos vamos a Waybackmachine a esa fecha a ver.

THM{ch3ck_th3_h4ckb4ck}

Nos piden a continuación que rompamos este código, la pista nos avisa de que es Vinegère y debemos encontrar la clave, que dice que ha perdido.

MYKAHODTQ{RVG_YVGGK_FAL_WXF} es el código, que se traduce en TRYHACKME{BANDERA}

Con lo cual, sabemos que MYKAHODTQ significa TRYHACKME.

Si nos vamos a dcode.fr podemos poner la primera parte MYKAHODTQ y elegir la opción Knowing a plain text word, que en este caso es TRYHACKME, así que nos saca la clave, que es THM.

Ahora, ponemos la bandera codificada completa para descifrar, cambiamos la opción de decodificación diciendo que tenemos la clave, introducimos THM en ella y decodificamos.

TRYHACKME{YOU_FOUND_THE_KEY}

La siguiente prueba dice pequeñas bases y nos da la hilera de números:

581695969015253365094191591547859387620042736036246486373595515576333693

La pista nos habla de dec > hex > ascii, así que seguimos esa secuencia, usando conversores online para ir más rápido.

THM{17_ju57_4n_0rd1n4ry_b4535}

La última prueba se llama leer el paquete y hay un paquete pcapng, pone que lo pongamos en modo stream, pero pasando. Me voy a Edición > Buscar paquete y ahí elijo la opción cadena y pongo flag, me encuentra un GET flag.txt hago doble clic en la respuesta, me lleva a ella, examino y encuentro la bandera (con botón derecho puedo volcar el ASCII

THM{d0_n07_574lk_m3}