Hackzeugma CTF 2020 yarı finallerinde çözdüğüm Potter sorusunun çözümünü anlatacağım.
Bize bir apk verilmişti.
potter.apk
Bu apk’yi yükleyip çalıştırıp butona tıkladığımızda bir textbox’a flag’ı yazıyordu.
Ama tamamının yazılmasını beklemek asırlar sürerdi herhalde.
Apk’yı jadx-gui ile açıp MainActivity’nin içindeki a inner classına ait run methoduna baktığımızda
ve
satırlarından anlaşılacağı üzere
eğer r yi 0 yaparsak, hiç beklemeyecekti.
Ayrıca r, oluşturulurken 100 e eşitlenmişti
veeee
satırlarında d‘yi r‘ye eşitleyip pow değişkenini d ile çarptığından, eğer r yi lol fonskiyonu çağrıldığında 0 yaparsak, r hep 0 kalacaktı.
frida-server’i çalıştırıp
potter.js
dosyasını
frida -f com.hz.potter -l potter.js –no-pause
ile gönderip butona tıkladığımızda flag anında karşımıza çıkıyordu