From 54d97d34e56e82a875a4692fa831476470c926b5 Mon Sep 17 00:00:00 2001 From: jose Date: Wed, 29 Apr 2026 22:38:38 -0300 Subject: [PATCH 01/21] Create readme.md --- 2025/MilaConPapasFritas/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 2025/MilaConPapasFritas/readme.md diff --git a/2025/MilaConPapasFritas/readme.md b/2025/MilaConPapasFritas/readme.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/2025/MilaConPapasFritas/readme.md @@ -0,0 +1 @@ + From eb3f4f4a2666eb9aaa1e2d6008cd5e05870fdb94 Mon Sep 17 00:00:00 2001 From: jose Date: Wed, 29 Apr 2026 22:39:20 -0300 Subject: [PATCH 02/21] Create readme.md --- 2025/MilaConPapasFritas/CTF1-Ancient Mistery /readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 2025/MilaConPapasFritas/CTF1-Ancient Mistery /readme.md diff --git a/2025/MilaConPapasFritas/CTF1-Ancient Mistery /readme.md b/2025/MilaConPapasFritas/CTF1-Ancient Mistery /readme.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/2025/MilaConPapasFritas/CTF1-Ancient Mistery /readme.md @@ -0,0 +1 @@ + From 05c7d205b16b406090b0d028aa1e1c809003062a Mon Sep 17 00:00:00 2001 From: jose Date: Wed, 29 Apr 2026 22:39:51 -0300 Subject: [PATCH 03/21] Create readme.md --- 2025/MilaConPapasFritas/CTF2-Browser Boss Fight/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 2025/MilaConPapasFritas/CTF2-Browser Boss Fight/readme.md diff --git a/2025/MilaConPapasFritas/CTF2-Browser Boss Fight/readme.md b/2025/MilaConPapasFritas/CTF2-Browser Boss Fight/readme.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/2025/MilaConPapasFritas/CTF2-Browser Boss Fight/readme.md @@ -0,0 +1 @@ + From 949c89ba7e2e74a9437e441022b323c7577cc1ca Mon Sep 17 00:00:00 2001 From: jose Date: Wed, 29 Apr 2026 22:40:51 -0300 Subject: [PATCH 04/21] Create readme.md --- 2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md diff --git a/2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md b/2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md @@ -0,0 +1 @@ + From 88fd4785ee185bb9fe5d1a5c515c8a69ae21edbe Mon Sep 17 00:00:00 2001 From: jose Date: Wed, 29 Apr 2026 22:41:45 -0300 Subject: [PATCH 05/21] Create readme.md --- 2025/MilaConPapasFritas/CTF4-X-Ray Vision/readme.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 2025/MilaConPapasFritas/CTF4-X-Ray Vision/readme.md diff --git a/2025/MilaConPapasFritas/CTF4-X-Ray Vision/readme.md b/2025/MilaConPapasFritas/CTF4-X-Ray Vision/readme.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/2025/MilaConPapasFritas/CTF4-X-Ray Vision/readme.md @@ -0,0 +1 @@ + From 584860ecd1e300bbd9a705f09f92a0f4085325d0 Mon Sep 17 00:00:00 2001 From: jose Date: Wed, 29 Apr 2026 22:49:03 -0300 Subject: [PATCH 06/21] Add files via upload --- .../CTF1-Ancient Mistery/solve.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 2025/MilaConPapasFritas/CTF1-Ancient Mistery/solve.py diff --git a/2025/MilaConPapasFritas/CTF1-Ancient Mistery/solve.py b/2025/MilaConPapasFritas/CTF1-Ancient Mistery/solve.py new file mode 100644 index 0000000..0289ddc --- /dev/null +++ b/2025/MilaConPapasFritas/CTF1-Ancient Mistery/solve.py @@ -0,0 +1,24 @@ +import base64 + +# Leer el contenido del archivo +with open("secret_message.txt", "r") as f: + data = f.read().strip() + +# Decodificar hasta 50 veces +for i in range(50): + try: + # Decodificar + data = base64.b64decode(data).decode('utf-8') + + # Mostrar progreso + print(f"Capa {i+1}: {data[:50]}...") + + # Si encontramos la flag en formato kashiCTF, terminamos + if data.startswith("kashiCTF{") or data.startswith("flag{"): + print(f"\nFLAG encontrada en capa {i+1}:") + print(data) + break + + except Exception as e: + print(f"Error en capa {i+1}: {e}") + break \ No newline at end of file From 230c801bd274496303103730f9b7ce555e0ecc16 Mon Sep 17 00:00:00 2001 From: jose Date: Wed, 29 Apr 2026 22:50:30 -0300 Subject: [PATCH 07/21] Delete 2025/MilaConPapasFritas/CTF1-Ancient Mistery directory --- .../CTF1-Ancient Mistery/solve.py | 24 ------------------- 1 file changed, 24 deletions(-) delete mode 100644 2025/MilaConPapasFritas/CTF1-Ancient Mistery/solve.py diff --git a/2025/MilaConPapasFritas/CTF1-Ancient Mistery/solve.py b/2025/MilaConPapasFritas/CTF1-Ancient Mistery/solve.py deleted file mode 100644 index 0289ddc..0000000 --- a/2025/MilaConPapasFritas/CTF1-Ancient Mistery/solve.py +++ /dev/null @@ -1,24 +0,0 @@ -import base64 - -# Leer el contenido del archivo -with open("secret_message.txt", "r") as f: - data = f.read().strip() - -# Decodificar hasta 50 veces -for i in range(50): - try: - # Decodificar - data = base64.b64decode(data).decode('utf-8') - - # Mostrar progreso - print(f"Capa {i+1}: {data[:50]}...") - - # Si encontramos la flag en formato kashiCTF, terminamos - if data.startswith("kashiCTF{") or data.startswith("flag{"): - print(f"\nFLAG encontrada en capa {i+1}:") - print(data) - break - - except Exception as e: - print(f"Error en capa {i+1}: {e}") - break \ No newline at end of file From 2316c42b7916efb9ef6a7152cecc9bc8e18be34e Mon Sep 17 00:00:00 2001 From: jose Date: Wed, 29 Apr 2026 22:51:20 -0300 Subject: [PATCH 08/21] Add files via upload --- .../CTF1-Ancient Mistery/solve.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 2025/MilaConPapasFritas/CTF1-Ancient Mistery/solve.py diff --git a/2025/MilaConPapasFritas/CTF1-Ancient Mistery/solve.py b/2025/MilaConPapasFritas/CTF1-Ancient Mistery/solve.py new file mode 100644 index 0000000..0289ddc --- /dev/null +++ b/2025/MilaConPapasFritas/CTF1-Ancient Mistery/solve.py @@ -0,0 +1,24 @@ +import base64 + +# Leer el contenido del archivo +with open("secret_message.txt", "r") as f: + data = f.read().strip() + +# Decodificar hasta 50 veces +for i in range(50): + try: + # Decodificar + data = base64.b64decode(data).decode('utf-8') + + # Mostrar progreso + print(f"Capa {i+1}: {data[:50]}...") + + # Si encontramos la flag en formato kashiCTF, terminamos + if data.startswith("kashiCTF{") or data.startswith("flag{"): + print(f"\nFLAG encontrada en capa {i+1}:") + print(data) + break + + except Exception as e: + print(f"Error en capa {i+1}: {e}") + break \ No newline at end of file From 60ab4cc5681646e53732f213ec962bd5111991c1 Mon Sep 17 00:00:00 2001 From: jose Date: Wed, 29 Apr 2026 22:51:49 -0300 Subject: [PATCH 09/21] Delete 2025/MilaConPapasFritas/CTF1-Ancient Mistery directory --- .../CTF1-Ancient Mistery/solve.py | 24 ------------------- 1 file changed, 24 deletions(-) delete mode 100644 2025/MilaConPapasFritas/CTF1-Ancient Mistery/solve.py diff --git a/2025/MilaConPapasFritas/CTF1-Ancient Mistery/solve.py b/2025/MilaConPapasFritas/CTF1-Ancient Mistery/solve.py deleted file mode 100644 index 0289ddc..0000000 --- a/2025/MilaConPapasFritas/CTF1-Ancient Mistery/solve.py +++ /dev/null @@ -1,24 +0,0 @@ -import base64 - -# Leer el contenido del archivo -with open("secret_message.txt", "r") as f: - data = f.read().strip() - -# Decodificar hasta 50 veces -for i in range(50): - try: - # Decodificar - data = base64.b64decode(data).decode('utf-8') - - # Mostrar progreso - print(f"Capa {i+1}: {data[:50]}...") - - # Si encontramos la flag en formato kashiCTF, terminamos - if data.startswith("kashiCTF{") or data.startswith("flag{"): - print(f"\nFLAG encontrada en capa {i+1}:") - print(data) - break - - except Exception as e: - print(f"Error en capa {i+1}: {e}") - break \ No newline at end of file From 7002964046169be2329ebabed64cb68c3bb46690 Mon Sep 17 00:00:00 2001 From: jose Date: Wed, 29 Apr 2026 22:52:18 -0300 Subject: [PATCH 10/21] Create solve.py --- .../CTF1-Ancient Mistery /solve.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 2025/MilaConPapasFritas/CTF1-Ancient Mistery /solve.py diff --git a/2025/MilaConPapasFritas/CTF1-Ancient Mistery /solve.py b/2025/MilaConPapasFritas/CTF1-Ancient Mistery /solve.py new file mode 100644 index 0000000..5bb4470 --- /dev/null +++ b/2025/MilaConPapasFritas/CTF1-Ancient Mistery /solve.py @@ -0,0 +1,24 @@ +import base64 + +# Leer el contenido del archivo +with open("secret_message.txt", "r") as f: + data = f.read().strip() + +# Decodificar hasta 50 veces +for i in range(50): + try: + # Decodificar + data = base64.b64decode(data).decode('utf-8') + + # Mostrar progreso + print(f"Capa {i+1}: {data[:50]}...") + + # Si encontramos la flag en formato kashiCTF, terminamos + if data.startswith("kashiCTF{") or data.startswith("flag{"): + print(f"\nFLAG encontrada en capa {i+1}:") + print(data) + break + + except Exception as e: + print(f"Error en capa {i+1}: {e}") + break From 0c01e9c27a94ee2c04fae85a555614ffe4749640 Mon Sep 17 00:00:00 2001 From: jose Date: Wed, 29 Apr 2026 22:52:54 -0300 Subject: [PATCH 11/21] Add CryptoVisor.txt with initial content --- 2025/MilaConPapasFritas/CTF3-Cripto Visor/CryptoVisor.txt | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 2025/MilaConPapasFritas/CTF3-Cripto Visor/CryptoVisor.txt diff --git a/2025/MilaConPapasFritas/CTF3-Cripto Visor/CryptoVisor.txt b/2025/MilaConPapasFritas/CTF3-Cripto Visor/CryptoVisor.txt new file mode 100644 index 0000000..5d6411a --- /dev/null +++ b/2025/MilaConPapasFritas/CTF3-Cripto Visor/CryptoVisor.txt @@ -0,0 +1,4 @@ +CryptoVisor +----------- + +*@F 92G6 7@F?5 :E] ~FC DFCG6:==2?46 E62> :?E6C46AE65 2 EC2?D>:DD:@? 7C@> :?D:56 E96 %C256':D@C ?6EH@C<] %96 286?E FD65 2 4:A96C E@ AC@E64E E96 >6DD286] qFE 42? J@F 564CJAE E96 D64@?5 >6DD286n |2J36 ECJ FD:?8 D@>6 D@CE @7 #~% 564CJAE:@? 2D H6==] {39 F?:C @63IC2 G283 8FC v6?BCxG736 2C8;36I ?2B F?:C 6CACG:CB 8FC DJ?E] vFC DJ?E G7 HA8DLcA@BA!_"Al$#@B_(0$N From 5a8e9c8749a2667d892d05da18f8aa41149a7019 Mon Sep 17 00:00:00 2001 From: danielaDel <48776465+danielaDel@users.noreply.github.com> Date: Wed, 29 Apr 2026 22:59:40 -0300 Subject: [PATCH 12/21] Update readme with team info and CTF details Added team members and details about CTF challenges. --- 2025/MilaConPapasFritas/readme.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/2025/MilaConPapasFritas/readme.md b/2025/MilaConPapasFritas/readme.md index 8b13789..3f02849 100644 --- a/2025/MilaConPapasFritas/readme.md +++ b/2025/MilaConPapasFritas/readme.md @@ -1 +1,15 @@ +# TeamMilaConPapasFritas +## Integrantes +### Aguilar Jose +### Delgado Daniela 15005/5 +## Los writeups corresponden a los siguientes retos: +### | KashiCTF’26 | [https://kashictf.iitbhucybersec.in/challenges](https://kashictf.iitbhucybersec.in/challenges) | Ancient Mistery | Criptography | +### | UMassCTF 2026 | [https://ctf.umasscybersec.org](https://ctf.umasscybersec.org/challenges)/ | BrOWSER BOSS FIGHT | Web | +### | Jersey CTF VI | [https://ctf.jerseyctf.com/](https://ctf.jerseyctf.com/) | Crypto Visor | Criptography | +### | Jersey CTF VI | [https://ctf.jerseyctf.com/](https://ctf.jerseyctf.com/) | X-Ray Vision | Web | + +Los ctf se desarrollaron los siguientes días: + +* UMassCTF 2026 : 10PM UTC April 10 – 10PM UTC April 12, 2026 +* Jersey CTF VI : Sat, Apr 18th 2026, 1:00 PM (-03:00) \- Sun, Apr 19th 2026, 1:00 PM (-03:00) . From d4d2b98462ec1718a2730c78cce0aee02836232c Mon Sep 17 00:00:00 2001 From: jose Date: Wed, 29 Apr 2026 23:10:29 -0300 Subject: [PATCH 13/21] Update readme.md with CTF Ancient Mystery details Added detailed information about the CTF challenge including its description, analysis, and decoding process. --- .../CTF1-Ancient Mistery /readme.md | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/2025/MilaConPapasFritas/CTF1-Ancient Mistery /readme.md b/2025/MilaConPapasFritas/CTF1-Ancient Mistery /readme.md index 8b13789..c4eb8a4 100644 --- a/2025/MilaConPapasFritas/CTF1-Ancient Mistery /readme.md +++ b/2025/MilaConPapasFritas/CTF1-Ancient Mistery /readme.md @@ -1 +1,35 @@ +# CTF Ancient Mystery +Url del ctf: https://kashictf.iitbhucybersec.in/challenges#Ancient%20Mystery-4 + +Date 03 April, 12:00 UTC — 04 April 2026, 12:00 UTC + +Es un desafio de Cryptography +Screenshot_294 +## Entendiendo el reto +El enunciado dice: + +* Un mensaje secreto desde la epoca del Mahabharata(3136 a.C) +* Cada 64 años se recodifica el mensaje +* Han pasado 3136 años hasta la era comun +* 3136 / 64 = 49 ciclos de recodificacion +* El formato de la flag debe ser kashiCTF{...} +* Un archivo de texto “secret_message.txt” +## Analisis del archivo descargado +El archivo secret_message.txt contiene una cadena muy larga que comienza con: +Vm0wd2QyUXlVWGxWV0d4V1YwZDRWMVl3WkRSV01WbDNXa1JTVjAxV2JETlhhMUp… + +* Solo contiene letras mayusculas y minusculas +* Estructura típica de Base64 +* Al decodificar una vez, se obtiene otra cadena similar, lo que indica multiples capas +## Proceso de decodificacion +Si cada 64 años se aplicaba una codificación Base64, tras 49 ciclos tendriamos 49 capas de Base 64 + +Solución implementada en Python: +Screenshot_292 +## Resultado +Al ejecutar el script, despues de varias decodificaciones (49 veces), se obtiene un texto que comienza con flag{..} +Screenshot_293 + +La flag aparece como flag{th3…} se tiene que cambiar el prefijo por kashiCTF{..} ya que lo dice el enunciado por lo que queda +**kashiCTF{th3_s3cr3t_0f_mah4bh4r4t4_fr0m_3136_BCE}** From 70fa12d4506bf4c82aea9300b3cc65dcb71f40b1 Mon Sep 17 00:00:00 2001 From: jose Date: Wed, 29 Apr 2026 23:23:25 -0300 Subject: [PATCH 14/21] Add write-up for Browser Boss Fight challenge Added a write-up for the Browser Boss Fight challenge, detailing the steps to solve it and the obtained flag. --- .../CTF2-Browser Boss Fight/readme.md | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/2025/MilaConPapasFritas/CTF2-Browser Boss Fight/readme.md b/2025/MilaConPapasFritas/CTF2-Browser Boss Fight/readme.md index 8b13789..605c403 100644 --- a/2025/MilaConPapasFritas/CTF2-Browser Boss Fight/readme.md +++ b/2025/MilaConPapasFritas/CTF2-Browser Boss Fight/readme.md @@ -1 +1,42 @@ +# Browser Boss Fight-WriteUp +## Categoría: Web + +### Descripción del desafío: + +### El desafío nos presenta una página con solo un input para ingresar una “key”. + +image1-bbf + + + + + +### Si inspeccionamos el código, observamos que no importa cual sea el input ingresado, el valor del input se cambia a “WEAK_NON_KOOPA_KNOCK”. + +image2-bbf + + + +### Si probamos cualquier input obtenemos el siguiente mensaje en pantalla. Ademas podemos visualizar la cabecera “server” que contiene una pista : “In case you forget the key, check under_the_mat” +image3-bbf + + +### Ahora haciendo uso de burp suite y de la pista, interceptamos la peticion para cambiar el valor constante de key por “under_the_mat”. +image4-bbf + +### Y asi logramos el acceso a la siguiente pagina: +image5-bbf + +### Como vemos el texto dice “i removed the axe”, si inspeccionamos encontramos que tiene hasAxe=false: +image6-bff + +### Si interceptamos nuevamente la petición get y modificamos el valor por true: +image7-bbf + + +### Finalmente obtenemos la flag: +image8-bbf + +## Flag obtenida : UMASS{br0k3n_1n_2_b0wz3r5_c4st13} + From 657392f6a06b931b157a6a52ccd25fb39e245fd2 Mon Sep 17 00:00:00 2001 From: jose Date: Wed, 29 Apr 2026 23:24:30 -0300 Subject: [PATCH 15/21] Update Aguilar Jose's entry with student ID Added student ID to Aguilar Jose in the readme. --- 2025/MilaConPapasFritas/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2025/MilaConPapasFritas/readme.md b/2025/MilaConPapasFritas/readme.md index 3f02849..b9a222c 100644 --- a/2025/MilaConPapasFritas/readme.md +++ b/2025/MilaConPapasFritas/readme.md @@ -1,6 +1,6 @@ # TeamMilaConPapasFritas ## Integrantes -### Aguilar Jose +### Aguilar Jose 10428/4 ### Delgado Daniela 15005/5 ## Los writeups corresponden a los siguientes retos: From 8581c1407df723ceb10adef9e2ca16c394a7db7d Mon Sep 17 00:00:00 2001 From: danielaDel <48776465+danielaDel@users.noreply.github.com> Date: Wed, 29 Apr 2026 23:57:55 -0300 Subject: [PATCH 16/21] Update readme.md with X-Ray Vision challenge details --- .../MilaConPapasFritas/CTF3-Cripto Visor/readme.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md b/2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md index 8b13789..08df330 100644 --- a/2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md +++ b/2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md @@ -1 +1,15 @@ +# X-Ray Vision +## Categoría: Web +### Tenemos el siguiente enunciado: +criptoenun + +### La traducción es : “Nuestro equipo de vigilancia interceptó una transmisión desde el interior de la red TradeVisor. El agente utilizó un cifrado para proteger el mensaje. Decodificalo, recupera la clave de acceso y envíala para desbloquear la bóveda.” +### Además nos proporciona un archivo .txt con el mensaje. +### Observando el texto que aparece en el archivo, sospechamos de que podría estar cifrado con algún tipo de rot, probando obtenemos con rot47 el siguiente texto: +rot47 + +### Como vemos todavía no obtenemos la flag , pero si otra pista: el segundo mensaje también está cifrado en algún tipo de rot. +### Si aplicamos rot13 sobre el texto anterior +rot13 +### Finalmente obtenemos la flag : jctf{4cbdcC0Dc=FEbd0J_F} From f35cee4bb81d89ad0a5221d88281fd7ebe1ce49e Mon Sep 17 00:00:00 2001 From: danielaDel <48776465+danielaDel@users.noreply.github.com> Date: Wed, 29 Apr 2026 23:58:37 -0300 Subject: [PATCH 17/21] Update readme with final flag information --- 2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md b/2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md index 08df330..57b3aae 100644 --- a/2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md +++ b/2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md @@ -11,5 +11,5 @@ ### Como vemos todavía no obtenemos la flag , pero si otra pista: el segundo mensaje también está cifrado en algún tipo de rot. ### Si aplicamos rot13 sobre el texto anterior rot13 -### Finalmente obtenemos la flag : jctf{4cbdcC0Dc=FEbd0J_F} +Finalmente obtenemos la flag : jctf{4cbdcC0Dc=FEbd0J_F} From c41fa893dd3f74dd8f3547ad778cb79432147dc9 Mon Sep 17 00:00:00 2001 From: danielaDel <48776465+danielaDel@users.noreply.github.com> Date: Thu, 30 Apr 2026 00:19:39 -0300 Subject: [PATCH 18/21] readme with X-Ray Vision challenge details --- .../CTF4-X-Ray Vision/readme.md | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/2025/MilaConPapasFritas/CTF4-X-Ray Vision/readme.md b/2025/MilaConPapasFritas/CTF4-X-Ray Vision/readme.md index 8b13789..c5de8be 100644 --- a/2025/MilaConPapasFritas/CTF4-X-Ray Vision/readme.md +++ b/2025/MilaConPapasFritas/CTF4-X-Ray Vision/readme.md @@ -1 +1,38 @@ +# X-Ray Vision +## Categoría: Web + +### Tenemos el siguiente enunciado: +enun + +En el enunciado nos da la pista que hay una credencial olvidada en alguna parte de la página web, y que no está en texto plano. + +La página web nos muestra: +web + +Lo único interactivo es el boton de “query api”, si hacemos click obtenemos: +hint0 + +Nos aparece el mensaje: “status: unathorized missing token”. Con esta pista lo que hacemos es inspeccionar la pagina con burp suite y encontramos: +x-secret-token +token + +Con esta nueva información, interceptamos la petición que se hace al hacer click en “query api”, y agregamos la cabecera “x-secret-token” con el valor que aparece en data-t. +intercept1 + +Al hacer forward, obtenemos ahora +hint1 + +Si tomamos el valor del token anterior y probamos decodificarlo con rot13, obtenemos: +rot13web + + +Se obtiene : “d3v3l0p3r_t00l5”, esta no es la flag, asi que probamos interceptar de nuevo la peticion a /api , agregando de nuevo la cabecera de “x-secret-token” con el nuevo valor: +intecept2 + + +Finalmente obtenemos: +zoomflag + + +Flag: jctf{r0t_y0ur_w4y_t0_4cc3ss} From 863e79e166e0ea5c8cca41d50ca982e8cad93078 Mon Sep 17 00:00:00 2001 From: jose Date: Thu, 30 Apr 2026 00:27:50 -0300 Subject: [PATCH 19/21] Update readme.md --- 2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md b/2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md index 57b3aae..133be5b 100644 --- a/2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md +++ b/2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md @@ -11,5 +11,6 @@ ### Como vemos todavía no obtenemos la flag , pero si otra pista: el segundo mensaje también está cifrado en algún tipo de rot. ### Si aplicamos rot13 sobre el texto anterior rot13 -Finalmente obtenemos la flag : jctf{4cbdcC0Dc=FEbd0J_F} + +### Finalmente obtenemos la flag : jctf{4cbdcC0Dc=FEbd0J_F} From 50b6894e1b6f3966d1df5098957c1d80c6c6493a Mon Sep 17 00:00:00 2001 From: danielaDel Date: Sat, 2 May 2026 12:45:39 -0300 Subject: [PATCH 20/21] Se agrega script para resolucion automatica del ctf criptovisor --- .../CTF3-Cripto Visor/solve.py | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 2025/MilaConPapasFritas/CTF3-Cripto Visor/solve.py diff --git a/2025/MilaConPapasFritas/CTF3-Cripto Visor/solve.py b/2025/MilaConPapasFritas/CTF3-Cripto Visor/solve.py new file mode 100644 index 0000000..9a241af --- /dev/null +++ b/2025/MilaConPapasFritas/CTF3-Cripto Visor/solve.py @@ -0,0 +1,65 @@ +import codecs +import re + +def rot47_decodificar(texto): + resultado = [] + for char in texto: + codigo = ord(char) + if 33 <= codigo <= 126: # Rango de caracteres imprimibles + # Aplica ROT47 (desplazamiento de 47) + nuevo_codigo = 33 + ((codigo - 33 + 47) % 94) + resultado.append(chr(nuevo_codigo)) + else: + resultado.append(char) # Mantiene caracteres especiales como saltos de línea + return ''.join(resultado) + +def rot13_decodificar(texto): + return codecs.decode(texto, 'rot_13') + + +def extraer_flag(texto): + # Busca el patrón jctf{...} de la flag + patron = r'jctf\{[^}]*\}' + coincidencias = re.findall(patron, texto) + + if coincidencias: + return coincidencias[0] + + return None + +def decodificar_doble(archivo_entrada): + + with open(archivo_entrada, 'r', encoding='utf-8') as f: + contenido = f.read() + # Aplica ROT47 + rot47_resultado = [] + for char in contenido: + codigo = ord(char) + if 33 <= codigo <= 126: + nuevo_codigo = 33 + ((codigo - 33 + 47) % 94) + rot47_resultado.append(chr(nuevo_codigo)) + else: + rot47_resultado.append(char) + + # Aplica ROT13 al resultado de ROT47 + resultado_intermedio = ''.join(rot47_resultado) + final = codecs.decode(resultado_intermedio, 'rot_13') + + return final + +if __name__ == "__main__": + archivo = "CryptoVisor.txt" + try: + texto_final = decodificar_doble(archivo) + flag = extraer_flag(texto_final) + + if flag: + print(f" FLAG ENCONTRADA: {flag}") + else: + print("\n No se encontró flag con formato jctf{}") + print("\nTexto completo decodificado:") + print(texto_final) + except FileNotFoundError: + print(f"Error: No se encontró el archivo '{archivo}'") + except Exception as e: + print(f"Error durante la decodificación: {e}") \ No newline at end of file From 7ddf30616e97bc1f1699c4532cd07faf6ec6554d Mon Sep 17 00:00:00 2001 From: danielaDel <48776465+danielaDel@users.noreply.github.com> Date: Sat, 2 May 2026 12:58:30 -0300 Subject: [PATCH 21/21] Actualizado el readme Added instructions for executing solve.py to obtain the flag automatically. --- 2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md b/2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md index 133be5b..2f35b19 100644 --- a/2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md +++ b/2025/MilaConPapasFritas/CTF3-Cripto Visor/readme.md @@ -13,4 +13,4 @@ rot13 ### Finalmente obtenemos la flag : jctf{4cbdcC0Dc=FEbd0J_F} - +### Ejecutando el script solve.py se obtiene la flag de manera automatica.