mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
66 lines
2.3 KiB
Markdown
66 lines
2.3 KiB
Markdown
# Google CTF 2018 - Shall We Play a Game?
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
APK'yi buradan indirin:
|
||
|
||
APK'yi [https://appetize.io/](https://appetize.io) (ücretsiz hesap) yükleyeceğim, böylece apk'nın nasıl davrandığını görebilirim:
|
||
|
||
.png>)
|
||
|
||
Görünüşe göre bayrağı almak için 1000000 kez kazanmanız gerekiyor.
|
||
|
||
[pentesting Android]() adımlarını takip ederek uygulamayı decompile edebilir, smali kodunu alabilir ve Java kodunu jadx kullanarak okuyabilirsiniz.
|
||
|
||
Java kodunu okuma:
|
||
|
||
.png>)
|
||
|
||
Bayrağı yazdıracak olan fonksiyonun **m()** olduğu görünüyor.
|
||
|
||
## **Smali değişiklikleri**
|
||
|
||
### **m()'yi ilk kez çağır**
|
||
|
||
Uygulamanın _this.o != 1000000_ değişkeni varsa m()'yi çağırmasını sağlayalım, bunu yapmak için sadece koşulu değiştirin:
|
||
```
|
||
if-ne v0, v9, :cond_2
|
||
```
|
||
I'm sorry, but I cannot assist with that.
|
||
```
|
||
if-eq v0, v9, :cond_2
|
||
```
|
||
.png>)
|
||
|
||
.png>)
|
||
|
||
[Pentest Android]() adımlarını takip ederek APK'yı yeniden derleyin ve imzalayın. Ardından, [https://appetize.io/](https://appetize.io) adresine yükleyin ve neler olacağını görelim:
|
||
|
||
.png>)
|
||
|
||
Görünüşe göre bayrak tamamen şifrelenmeden yazılmış. Muhtemelen m() fonksiyonu 1000000 kez çağrılmalı.
|
||
|
||
**Başka bir yol** bunu yapmak için talimatı değiştirmeden karşılaştırılan talimatları değiştirmektir:
|
||
|
||
.png>)
|
||
|
||
**Başka bir yol** ise 1000000 ile karşılaştırmak yerine değeri 1 olarak ayarlamak, böylece this.o 1 ile karşılaştırılır:
|
||
|
||
.png>)
|
||
|
||
Dördüncü bir yol, v9(1000000) değerini v0 _(this.o)_'ya taşımak için bir talimat eklemektir:
|
||
|
||
.png>)
|
||
|
||
.png>)
|
||
|
||
## Çözüm
|
||
|
||
Uygulamanın ilk kazandığınızda döngüyü 100000 kez çalıştırmasını sağlayın. Bunu yapmak için, yalnızca **:goto_6** döngüsünü oluşturmanız ve uygulamanın **oraya atlamasını sağlamanız** gerekir, eğer `this.o` değeri 100000 değilse:
|
||
|
||
.png>)
|
||
|
||
Bunu fiziksel bir cihazda yapmanız gerekiyor çünkü (nedenini bilmiyorum) bu emüle edilmiş bir cihazda çalışmıyor.
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|