hacktricks/src/mobile-pentesting/android-app-pentesting/google-ctf-2018-shall-we-play-a-game.md

66 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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:
![](<../../images/image (421).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:
![](<../../images/image (495).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
```
![Before](<../../images/image (383).png>)
![After](<../../images/image (838).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:
![](<../../images/image (128).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:
![](<../../images/image (840).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:
![](<../../images/image (629).png>)
Dördüncü bir yol, v9(1000000) değerini v0 _(this.o)_'ya taşımak için bir talimat eklemektir:
![](<../../images/image (414).png>)
![](<../../images/image (424).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:
![](<../../images/image (1090).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}}