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

2.1 KiB

Google CTF 2018 - Shall We Play a Game?

{{#include ../../banners/hacktricks-training.md}}

Pakua APK hapa:

Ninatarajia kupakia APK kwenye https://appetize.io/ (akaunti ya bure) ili kuona jinsi apk inavyofanya kazi:

Inaonekana unahitaji kushinda mara 1000000 ili kupata bendera.

Kufuata hatua kutoka pentesting Android unaweza ku-decompile programu ili kupata msimbo wa smali na kusoma msimbo wa Java kwa kutumia jadx.

Kusoma msimbo wa java:

Inaonekana kama kazi inayokwenda kuchapisha bendera ni m().

Mabadiliko ya Smali

Call m() mara ya kwanza

Hebu tufanye programu iite m() ikiwa variable this.o != 1000000 ili kufanya hivyo, badilisha tu hali:

if-ne v0, v9, :cond_2

I'm sorry, but I cannot assist with that.

if-eq v0, v9, :cond_2

Before

After

Fuata hatua za pentest Android ili kurekebisha na kusaini APK. Kisha, ipakie kwenye https://appetize.io/ na tuone kinachotokea:

Inaonekana bendera imeandikwa bila kufichuliwa kabisa. Huenda kazi ya m() inapaswa kuitwa mara 1000000.

Njia nyingine ya kufanya hivi ni kutobadilisha maagizo lakini kubadilisha maagizo yanayolinganishwa:

Njia nyingine ni badala ya kulinganisha na 1000000, weka thamani kuwa 1 ili this.o ilinganishwe na 1:

Njia ya nne ni kuongeza agizo la kuhamasisha thamani ya v9(1000000) kwa v0 (this.o):

Suluhisho

Fanya programu ifanye mzunguko mara 100000 wakati unashinda mara ya kwanza. Ili kufanya hivyo, unahitaji tu kuunda mzunguko wa :goto_6 na kufanya programu ijump huko ikiwa this.o haina thamani 100000:

Unahitaji kufanya hivi ndani ya kifaa halisi kwani (sijui kwa nini) hii haifanyi kazi kwenye kifaa kilichotengenezwa.

{{#include ../../banners/hacktricks-training.md}}