Google CTF 2018 - Shall We Play a Game?

Reading time: 2 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

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.

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks