H1 Thermostat
1 minuto de lectura
Tenemos un archivo APK de Android llamado thermostat.apk
:
$ file thermostat.apk
thermostat.apk: Zip archive data, at least v0.0 to extract, compression method=deflate
Como se muestram un archivo APK es solo un archivo ZIP. Por tanto, podemos extraer su contenido:
$ 7z x thermostat.apk
Scanning the drive for archives:
1 file, 2595443 bytes (2535 KiB)
Extracting archive: thermostat.apk
--
Path = thermostat.apk
Type = zip
Physical Size = 2595443
Everything is Ok
Files: 569
Size: 4968479
Compressed: 2595443
$ ls
AndroidManifest.xml META-INF classes.dex res resources.arsc thermostat.apk
Este reto es tan fácil que las flags se encuentran dentro de los archivos extraídos. Podemos utilizar grep
de manera recursiva, no hay necesidad de utilizar apktool
o descompiladores a código Java:
$ grep -r FLAG *
Binary file classes.dex matches
Vemos que hay coincidencias en classes.dex
. Como se trata de un archivo binario, podemos ver la información imprimible mediante strings
. Después, podemos extraer ambas flags utilizando grep
de nuevo, pero con un filtro más específico (usando el formato de las flags de Hacker101CTF):
$ strings classes.dex | grep -oE '\^FLAG\^.*?\$FLAG\$'
^FLAG^xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx$FLAG$
^FLAG^xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx$FLAG$