<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Mobile on</title><link>https://synacklabs.github.io/tags/mobile/</link><description>Recent content in Mobile on</description><generator>Hugo -- gohugo.io</generator><language>es-es</language><lastBuildDate>Wed, 06 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://synacklabs.github.io/tags/mobile/index.xml" rel="self" type="application/rss+xml"/><managingEditor>admin@synacklabs.github.io (SynAckLabs)</managingEditor><webMaster>admin@synacklabs.github.io (SynAckLabs)</webMaster><item><title>InjuredAndroid Part I</title><link>https://synacklabs.github.io/posts/injuredandroid/</link><pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate><guid>https://synacklabs.github.io/posts/injuredandroid/</guid><description>&lt;p&gt;En esta sección voy a ir subiendo una serie de pentestings a aplicaciones móviles que estoy haciendo como preparación para la eMAPT. La idea es usar esto como mis propios apuntes para documentar el proceso de explotación de cada vulnerabilidad y tener bien claros los vectores de ataque más comunes en Android.&lt;/p&gt;
&lt;h3 id="flag-i-login-i"&gt;&lt;strong&gt;Flag I: LOGIN I&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8010-b5e1-f7b073d8f6cf.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Para la primera flag lo que haremos será directamente inspeccionar la APK para fijarnos en los datos de cada “flag” oculta.
Podemos observar que esta es muy sencilla ya que la flag está en el propio código.&lt;/p&gt;</description><content>&lt;p&gt;En esta sección voy a ir subiendo una serie de pentestings a aplicaciones móviles que estoy haciendo como preparación para la eMAPT. La idea es usar esto como mis propios apuntes para documentar el proceso de explotación de cada vulnerabilidad y tener bien claros los vectores de ataque más comunes en Android.&lt;/p&gt;
&lt;h3 id="flag-i-login-i"&gt;&lt;strong&gt;Flag I: LOGIN I&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8010-b5e1-f7b073d8f6cf.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Para la primera flag lo que haremos será directamente inspeccionar la APK para fijarnos en los datos de cada “flag” oculta.
Podemos observar que esta es muy sencilla ya que la flag está en el propio código.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8063-9471-da66d5d99a69.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-804a-b028-d78d60e4625e.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;h3 id="flag-ii-exported-activity"&gt;Flag II: EXPORTED ACTIVITY&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8060-bbb0-c1aec82ed2ba.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Esta segunda flag nos deja una pista bastante clara: Hay que inspeccionar la APK para descubrir actividades exportadas (accesibles desde fuera) que nos permitirán bypassear la MainActivity.&lt;/p&gt;
&lt;p&gt;En otras palabras, detectar actividades no protegidas nos permite ejecutar la aplicación sin tener que pasar por la actividad principal, eso nos puede permitir saltarnos ciertas medidas de seguridad y además android nos permite ejecutarla desde otras apps&lt;/p&gt;
&lt;p&gt;Vamos a ello!&lt;/p&gt;
&lt;p&gt;Para ello usaremos una herramienta llamada Drozer. esta herramienta nos permitirá analizar la app desde dentro y observar que componentes están expuestos (actividades expuestas).&lt;/p&gt;
&lt;p&gt;Primero de todo debemos descargar el agente para poder conectarnos al servidor de Drozer y lo activamos.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8058-b9e6-c38f03562e20.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Después deberemos redireccionar el puerto de nuestro PC al puerto abierto de drozer del Android (31415) y abriremos una consola en nuestra terminal.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8098-ade0-e025cd927cfc.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-803f-ab50-d00ebefdb534.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Cuando lo tenemos todo conectado empezaremos a enumerar la información de la app. Con los siguientes comandos podemos enumerar información general de la app (permisos, nombre, path…) y información general de las actividades (exportadas, permisos…) respectivamente.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;run&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;app&lt;/span&gt;.&lt;span style="color:#66d9ef"&gt;package&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;info&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;package&lt;/span&gt;&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;run&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;app&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;activity&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;info&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;a&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;package&lt;/span&gt;&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8019-b4a3-e25fd33b0b6a.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Ahora que tenemos las actividades exportadas, probaremos de ejecutarlas para ver cual contiene la flag. Lo haremos con el siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;adb&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;shell&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;am&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;start&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;n&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;package&lt;/span&gt;&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;/.&amp;lt;activity&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En este caso:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-80e5-8c76-e6631f7b01ab.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8067-b896-c53648f6a4a2.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Lo tenemos!&lt;/p&gt;
&lt;p&gt;Otra manera de ver las actividades exportadas seria con este comando :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;adb&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;shell&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;dumpsys&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;package&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;package&lt;/span&gt;&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#f92672"&gt;|&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;grep&lt;/span&gt; &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;i&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;activity&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8077-9ca1-d474352ab10d.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;O directamente desde el archivo AndroidManifest.xml:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8076-ac84-c6fed0d79851.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Aquí métodos no faltan! Pasamos a la siguiente flag.&lt;/p&gt;
&lt;p&gt;(Teoria: El fallo es el atributo &lt;code&gt;android:exported=&amp;quot;true&amp;quot;&lt;/code&gt; en el Manifest sin ningún permiso que lo proteja. Esto permite que cualquiera llame a la actividad desde fuera y se salte el login o cualquier flujo lógico de la app.)&lt;/p&gt;
&lt;h3 id="flag-iii-resources"&gt;Flag III: RESOURCES&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-805c-b811-c76552db2a00.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Tenemos pista: Recursos y archivos.xml&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-80e0-bb12-ea4f6fdc52eb.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Primero reviso los importantes, el AndroidManifest.xml pero no encuentro nada; luego el strings.xml.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-80f0-b4b0-d8f50df45ddd.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Aquí la tenemos. Siguiente&lt;/p&gt;
&lt;h3 id="flag-iv-login-ii"&gt;Flag IV: LOGIN II&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-80c2-aa3f-d61f552068c1.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;En el código principal vemos como se crea una instancia de la clase g() llamando a su método a() y luego se compara con el valor introducido por el usuario a través del EditText.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-805d-ba24-d9b34ce1f931.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Si entramos a esta clase podemos ver lo siguiente:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8002-909d-e91021aa00ff.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Vemos que la flag esta en base 64 asi que acudimos a nuestro amigo cyberChef.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8050-850f-f10309c452e0.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-80ea-b8da-d970b9864654.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Y lo tenemos!!&lt;/p&gt;
&lt;p&gt;PD: se podría hacer dinámicamente usando Frida pero lo dejaremos para otro capítulo&lt;/p&gt;
&lt;p&gt;(Teoria : El error es meter secretos (como la clave en base64) a pelo en el código. Por mucho que lo ofusques o lo codifiques, si está en el cliente, el atacante lo va a encontrar tarde o temprano mediante ingeniería inversa.)&lt;/p&gt;
&lt;h3 id="flag-v-exported-broadcast-receiver"&gt;Flag V: EXPORTED BROADCAST RECEIVER&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8039-91fa-f8261e71a8a2.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Analizando el código de este reto he podido observar que para obtener la flag había que interactuar con el onRecive y viendo las condiciones solo dando 3 clicks en el botón te daba la flag.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-80ad-8a4e-e92b259ae68b.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-80ae-9e13-cafdd5fc6761.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;easyone :P&lt;/p&gt;
&lt;p&gt;(Teoria: El &lt;code&gt;BroadcastReceiver&lt;/code&gt; responde a eventos externos sin validar correctamente el origen ni el estado interno. Esto permite que un atacante interactúe con él (en este caso mediante clicks/eventos) hasta cumplir la condición que revela la flag. El fallo es no implementar controles de acceso ni validaciones en componentes expuestos.)&lt;/p&gt;
&lt;h3 id="flag-vi-login-iii"&gt;Flag VI: LOGIN III&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8092-b3d0-de27a0b1a95f.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Viendo el código observamos que la flag esta codeada, si accedemos a la función vemos que se le aplican diferentes métodos para descodificarla. Podríamos seguir el paso a paso , pero como hemos comentado previamente tenemos la oportunidad ( y facilidad ) de usar una herramienta llamada Frida. Frida nos permite interceptar (hooking) llamadas a funciones, clases … en momento de runtime, entonces aquí la idea seria que en vez de rompernos la cabeza descodificando esta cadena, usaremos la propia app para que nos de la flag sin esfuerzo ninguno.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8016-ad13-e03420a844c3.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8011-8a58-eb39704d364f.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8003-83cd-e206e9e2af40.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;y obtenemos la flag!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-803d-8837-e66a86a332c4.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;h3 id="flag-vii-sqlite"&gt;Flag VII: SQLITE&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-805f-a073-fa2da2529605.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;En esta ocasión nos pide un usuario y una password, analizando el código podemos observar que el ejercicio crea una database, tenemos los datos en base64 pero prefiero hacerlo bien. Nos conectamos al device y accedemos a las bases de datos de la app y llegamos al hash siguiente:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-80ca-94ab-ca027d04dbd2.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-803e-8f07-c473bc58c0b6.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Lo pasaremos por nuestro otro gran amigo CrackStation y obtenemos la supuesta flag (o nombre de usuario).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8005-9a34-e4d8465f0178.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;En este punto tenemos el nombre de usuario, pero también necesitamos la password (segunda flag).&lt;/p&gt;
&lt;p&gt;Gracias a CTF o máquinas anteriores me puedo dar cuenta de que el inicio del supuesto hash de la password:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;9&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;EEADi&lt;/span&gt;&lt;span style="color:#f92672"&gt;^^&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Tiene un aire a:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;https&lt;/span&gt;&lt;span style="color:#f92672"&gt;:&lt;/span&gt;&lt;span style="color:#75715e"&gt;//
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Entonces con la IA en nuestra bando descubro que esta encriptado con ROT-47:&lt;/p&gt;
&lt;p&gt;y obtenemos lo siguiente&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-806b-b86c-fbd361e5bd72.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Y dentro de la URL:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8060-9bd9-e4b7c0e9bd9e.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/357888fa-f353-8079-91b5-cb4c69e4056b.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;(Esta flag se puede obtener usando dynamic analysis que lo adjuntare en la segunda parte de los apuntes)&lt;/p&gt;
&lt;p&gt;(Teoria: Almacenamiento inseguro. Guardar credenciales o datos sensibles en bases de datos locales (aunque sea en &lt;code&gt;/data/data/&lt;/code&gt;) es un riesgo si el móvil está rooteado o si hay una vulnerabilidad de lectura de archivos. El hash ayuda, pero si es débil (como este), se rompe fácil.)&lt;/p&gt;
&lt;h3 id="flag-viii--ix-aws--firebase"&gt;FLAG VIII &amp;amp; IX: AWS &amp;amp; FIREBASE&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/358888fa-f353-8087-8076-cccde1c774d1.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/358888fa-f353-80e0-9171-e8718edf55b9.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Viendo el código deberiamos encontrar credenciales para AWS pero después de rato no podemos encontrar nada…&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/358888fa-f353-8055-be59-d454cf3df811.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/358888fa-f353-80b1-86f8-c1c8dc086854.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/358888fa-f353-80b8-bd06-cedccb459c2a.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;En el código podemos ver una cadena en base64 que si la descodificamos tenemos lo siguiente:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/358888fa-f353-80d7-870d-ebc9477fbe49.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Y tambien en los strings encontramos la URL: &lt;code&gt;https://injuredandroid.firebaseio.com&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/358888fa-f353-8040-895c-e2c3b2303b46.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Si juntamos todo tenemos:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/358888fa-f353-802f-b453-e9474f453654.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;Haciendo este reto, me doy cuenta de que en la flag 8 aparece una función llamada database.child(”aws”) y tiene igual que ver que el reto 9 pero a diferencia que en este el”child” esta codificado en base64 asi que me da por probar y bingo!!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/358888fa-f353-80c1-bba1-eaf0cc0281b0.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://synacklabs.github.io/images/notion/358888fa-f353-80ed-a494-ccfad7773bcb.png" alt="Imagen del post"&gt;&lt;/p&gt;
&lt;p&gt;(Teoria: Hardcoding de credenciales de servicios en la nube. Nunca se deben dejar API keys o URLs de bases de datos (Firebase/AWS) expuestas en los strings o el código, porque permiten acceso directo a la infraestructura del servidor desde el lado del cliente.)&lt;/p&gt;
&lt;h3 id="final-parte-i"&gt;Final Parte I&lt;/h3&gt;
&lt;p&gt;De momento lo dejamos aquí con estas primeras flags. Más adelante seguiré con la segunda parte de los apuntes, donde nos meteremos en cosas más dinámicas y avanzadas que se han quedado en el tintero.&lt;/p&gt;</content><author>admin@synacklabs.github.io (SynAckLabs)</author></item></channel></rss>