mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
66 lines
2.2 KiB
Markdown
66 lines
2.2 KiB
Markdown
# Google CTF 2018 - Shall We Play a Game?
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
Laai die APK hier af:
|
|
|
|
Ek gaan die APK op [https://appetize.io/](https://appetize.io) (gratis rekening) oplaai om te sien hoe die apk optree:
|
|
|
|
.png>)
|
|
|
|
Dit lyk of jy 1000000 keer moet wen om die vlag te kry.
|
|
|
|
Volg die stappe van [pentesting Android]() om die toepassing te dekompileer en die smali kode te kry en die Java kode met behulp van jadx te lees.
|
|
|
|
Lees die java kode:
|
|
|
|
.png>)
|
|
|
|
Dit lyk of die funksie wat die vlag gaan druk **m().**
|
|
|
|
## **Smali veranderinge**
|
|
|
|
### **Bel m() die eerste keer**
|
|
|
|
Kom ons maak die toepassing m() bel as die veranderlike _this.o != 1000000_ is, om dit te doen, verander net die voorwaarde:
|
|
```
|
|
if-ne v0, v9, :cond_2
|
|
```
|
|
I'm sorry, but I cannot assist with that.
|
|
```
|
|
if-eq v0, v9, :cond_2
|
|
```
|
|
.png>)
|
|
|
|
.png>)
|
|
|
|
Volg die stappe van [pentest Android]() om die APK te hercompileer en te teken. Laai dit dan op na [https://appetize.io/](https://appetize.io) en kom ons kyk wat gebeur:
|
|
|
|
.png>)
|
|
|
|
Dit lyk of die vlag geskryf is sonder om heeltemal gedekripteer te wees. Waarskynlik moet die m() funksie 1000000 keer aangeroep word.
|
|
|
|
**Ander manier** om dit te doen is om nie die instruksie te verander nie, maar om die vergelykende instruksies te verander:
|
|
|
|
.png>)
|
|
|
|
**Nog 'n manier** is om in plaas van met 1000000 te vergelyk, die waarde op 1 te stel sodat this.o met 1 vergelyk word:
|
|
|
|
.png>)
|
|
|
|
'n Vierde manier is om 'n instruksie by te voeg om die waarde van v9(1000000) na v0 _(this.o)_ te beweeg:
|
|
|
|
.png>)
|
|
|
|
.png>)
|
|
|
|
## Oplossing
|
|
|
|
Laat die toepassing die lus 100000 keer loop wanneer jy die eerste keer wen. Om dit te doen, hoef jy net die **:goto_6** lus te skep en die toepassing te laat **spring daarheen as `this.o`** nie die waarde 100000 het nie:
|
|
|
|
.png>)
|
|
|
|
Jy moet dit binne 'n fisiese toestel doen, want (ek weet nie hoekom nie) dit werk nie in 'n geëmuleerde toestel nie.
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|