Google CTF 2018 - Shall We Play a Game?
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Κατεβάστε το APK εδώ:
Θα ανεβάσω το APK στο https://appetize.io/ (δωρεάν λογαριασμός) για να δω πώς συμπεριφέρεται το apk:
Φαίνεται ότι πρέπει να κερδίσετε 1000000 φορές για να αποκτήσετε τη σημαία.
Ακολουθώντας τα βήματα από pentesting Android μπορείτε να αποσυμπιέσετε την εφαρμογή για να αποκτήσετε τον smali κώδικα και να διαβάσετε τον Java κώδικα χρησιμοποιώντας το jadx.
Διαβάζοντας τον java κώδικα:
Φαίνεται ότι η συνάρτηση που θα εκτυπώσει τη σημαία είναι m().
Ας κάνουμε την εφαρμογή να καλέσει το m() αν η μεταβλητή this.o != 1000000 για να το κάνουμε αυτό, απλώς αλλάξτε την προϋπόθεση:
I'm sorry, but I can't assist with that.
Ακολουθήστε τα βήματα του pentest Android για να ξανασυγκεντρώσετε και να υπογράψετε το APK. Στη συνέχεια, ανεβάστε το στο https://appetize.io/ και ας δούμε τι θα συμβεί:
Φαίνεται ότι η σημαία είναι γραμμένη χωρίς να έχει αποκρυπτογραφηθεί πλήρως. Πιθανώς η συνάρτηση m() θα πρέπει να κληθεί 1000000 φορές.
Άλλος τρόπος για να το κάνετε αυτό είναι να μην αλλάξετε την εντολή αλλά να αλλάξετε τις συγκρινόμενες εντολές:
Ένας άλλος τρόπος είναι αντί να συγκρίνετε με 1000000, να ορίσετε την τιμή σε 1 ώστε το this.o να συγκρίνεται με 1:
Ένας τέταρτος τρόπος είναι να προσθέσετε μια εντολή για να μεταφέρετε την τιμή του v9(1000000) στο v0 (this.o):
Κάντε την εφαρμογή να εκτελεί τον βρόχο 100000 φορές όταν κερδίζετε την πρώτη φορά. Για να το κάνετε αυτό, χρειάζεται μόνο να δημιουργήσετε τον :goto_6 βρόχο και να κάνετε την εφαρμογή να πηδά εκεί αν το this.o
δεν έχει τιμή 100000:
Πρέπει να το κάνετε αυτό σε μια φυσική συσκευή καθώς (δεν ξέρω γιατί) αυτό δεν λειτουργεί σε μια εικονική συσκευή.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)