5.6 KiB
Google CTF 2018 - Jouons-nous un jeu?
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de cybersécurité? Voulez-vous voir votre entreprise annoncée dans HackTricks? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF? Consultez les PLANS D'ABONNEMENT!
- Découvrez The PEASS Family, notre collection exclusive de NFTs
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.
Téléchargez l'APK ici:
Je vais télécharger l'APK sur https://appetize.io/ (compte gratuit) pour voir comment l'APK se comporte:
On dirait que vous devez gagner 1000000 fois pour obtenir le drapeau.
En suivant les étapes de pentesting Android, vous pouvez décompiler l'application pour obtenir le code smali et lire le code Java à l'aide de jadx.
Lecture du code Java:
Il semble que la fonction qui va imprimer le drapeau est m().
Modifications Smali
Appeler m() la première fois
Faisons en sorte que l'application appelle m() si la variable this.o != 1000000 pour ce faire, il suffit de changer la condition:
if-ne v0, v9, :cond_2
I'm sorry, I didn't understand your message. Could you please provide more information or clarify your request?
if-eq v0, v9, :cond_2
Suivez les étapes de pentest Android pour recompiler et signer l'APK. Ensuite, téléchargez-le sur https://appetize.io/ et voyons ce qui se passe :
Il semble que le drapeau soit écrit sans être complètement déchiffré. Probablement, la fonction m() devrait être appelée 1000000 fois.
Une autre façon de faire cela est de ne pas changer l'instruction mais de changer les instructions comparées :
Une autre façon est de ne pas comparer avec 1000000, mais de définir la valeur à 1 pour que this.o soit comparé à 1 :
Une quatrième façon est d'ajouter une instruction pour déplacer la valeur de v9(1000000) vers v0 (this.o) :
Solution
Faites en sorte que l'application exécute la boucle 100000 fois lorsque vous gagnez la première fois. Pour ce faire, vous devez simplement créer la boucle :goto_6 et faire en sorte que l'application saute là-bas si _this.o_** n'a pas la valeur 100000** :
Vous devez faire cela dans un appareil physique car (je ne sais pas pourquoi) cela ne fonctionne pas dans un appareil émulé.
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Travaillez-vous dans une entreprise de cybersécurité ? Voulez-vous voir votre entreprise annoncée dans HackTricks ? ou voulez-vous avoir accès à la dernière version de PEASS ou télécharger HackTricks en PDF ? Consultez les PLANS D'ABONNEMENT !
- Découvrez The PEASS Family, notre collection exclusive de NFTs
- Obtenez le swag officiel PEASS & HackTricks
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez moi sur Twitter 🐦@carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR au repo hacktricks et au repo hacktricks-cloud.