注:作者是CTF初學者,邊學習邊記錄,如有錯誤或疏漏請批評指正,也請各位大佬多多包涵。
CTF-Bugku-安卓篇1signin Writeup
Bugku安卓部分第一題,第七屆山東省大學生網絡安全技能大賽的題目,屬於Android逆向分析。(常用工具:安卓模擬器、JEB、Cyberchef、Androidkiller)

題目文件:https://ctf.bugku.com/files/109fa055c682e810684427c123a0833b/sign_in.zip
靜態分析方法:
1.下載附件解壓縮,用模擬器安裝打開apk,隨便輸入測試,提示try again

2.用jeb打開,找到MainActivity,右鍵解析成java分析

3.根據提示try again,分析checkpassword部分,往下看,getflag中getString值來自0x7F0B0020。即資源id為0x7f0b0020
4.在res/values文件夾中找到public.xml和strings.xml,搜索id對應的string,找到991YiZWOz81ZhFjZfJXdwk3X1k2XzIXZIt3ZhxmZ


5.根據之前分析,將值reverse(字符首尾逆向),再進行base64解密,得到flag。


flag{Her3_i5_y0ur_f1ag_39fbc_}
動態調試方法:
1.用AndroidKiller打開,在AndroidManifest.xml中加入android:debuggable=”true”,保存並編譯,做好調試准備

2.在模擬器中安裝打開編譯過的apk,進行測試,可以正常運行。

3.用JEB進行動態調試,附在模擬器進程上。

4.在MainActivity中,Congratulation前下斷點,運行后,將寄存器v1的type改成string,顯示出flag。

5.在模擬器運行的apk中輸入測試,驗證通過。

動態調試與靜態分析得到的flag一致
flag{Her3_i5_y0ur_f1ag_39fbc_}
