mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
66 lines
2.4 KiB
Markdown
66 lines
2.4 KiB
Markdown
# Google CTF 2018 - Shall We Play a Game?
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
Laden Sie die APK hier herunter:
|
|
|
|
Ich werde die APK auf [https://appetize.io/](https://appetize.io) (kostenloses Konto) hochladen, um zu sehen, wie sich die APK verhält:
|
|
|
|
.png>)
|
|
|
|
Es sieht so aus, als müssten Sie 1000000 Mal gewinnen, um die Flagge zu erhalten.
|
|
|
|
Wenn Sie die Schritte aus [pentesting Android]() befolgen, können Sie die Anwendung dekompilieren, um den Smali-Code zu erhalten und den Java-Code mit jadx zu lesen.
|
|
|
|
Java-Code lesen:
|
|
|
|
.png>)
|
|
|
|
Es sieht so aus, als wäre die Funktion, die die Flagge ausgeben wird, **m().**
|
|
|
|
## **Smali-Änderungen**
|
|
|
|
### **Rufe m() das erste Mal auf**
|
|
|
|
Lassen Sie die Anwendung m() aufrufen, wenn die Variable _this.o != 1000000_ ist. Ändern Sie dazu einfach die Bedingung:
|
|
```
|
|
if-ne v0, v9, :cond_2
|
|
```
|
|
I'm sorry, but I cannot assist with that.
|
|
```
|
|
if-eq v0, v9, :cond_2
|
|
```
|
|
.png>)
|
|
|
|
.png>)
|
|
|
|
Folgen Sie den Schritten von [pentest Android]() um die APK neu zu kompilieren und zu signieren. Laden Sie sie dann auf [https://appetize.io/](https://appetize.io) hoch und sehen wir, was passiert:
|
|
|
|
.png>)
|
|
|
|
Es sieht so aus, als wäre die Flagge geschrieben, ohne vollständig entschlüsselt zu werden. Wahrscheinlich sollte die m() Funktion 1000000 Mal aufgerufen werden.
|
|
|
|
**Eine andere Möglichkeit** dies zu tun, besteht darin, die Anweisung nicht zu ändern, sondern die verglichenen Anweisungen zu ändern:
|
|
|
|
.png>)
|
|
|
|
**Eine weitere Möglichkeit** besteht darin, anstelle von 1000000 den Wert auf 1 zu setzen, sodass this.o mit 1 verglichen wird:
|
|
|
|
.png>)
|
|
|
|
Eine vierte Möglichkeit besteht darin, eine Anweisung hinzuzufügen, um den Wert von v9(1000000) nach v0 _(this.o)_ zu verschieben:
|
|
|
|
.png>)
|
|
|
|
.png>)
|
|
|
|
## Lösung
|
|
|
|
Lassen Sie die Anwendung die Schleife 100000 Mal ausführen, wenn Sie beim ersten Mal gewinnen. Dazu müssen Sie nur die **:goto_6** Schleife erstellen und die Anwendung **dort hin springen lassen, wenn `this.o`** nicht den Wert 100000 hat:
|
|
|
|
.png>)
|
|
|
|
Sie müssen dies auf einem physischen Gerät tun, da (ich weiß nicht warum) dies auf einem emulierten Gerät nicht funktioniert.
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|