XCTF-app2
阿新 • • 發佈:2020-08-01
查殼
無殼,開啟看是一個登入介面,點選登入會顯示Waiting for you
逆向分析
檔案結構
啟動類是MainActivity,MainActivity是將兩個輸入框的內容傳送給SecondActivity。ili是使用者名稱,lil是密碼。
再看SecondActivity,下面是onCreate的程式碼
public void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(R.layout.activity_main2); Intent intent = getIntent(); String stringExtra = intent.getStringExtra("ili"); String stringExtra2 = intent.getStringExtra("lil"); if (Encryto.doRawData(this, stringExtra + stringExtra2).equals("VEIzd/V2UPYNdn/bxH3Xig==")) { intent.setAction("android.test.action.MoniterInstallService"); intent.setClass(this, MoniterInstallService.class); intent.putExtra("company", "tencent"); intent.putExtra("name", "hacker"); intent.putExtra("age", 18); startActivity(intent); startService(intent); } SharedPreferences.Editor edit = getSharedPreferences("test", 0).edit(); edit.putString("ilil", stringExtra); edit.putString("lili", stringExtra2); edit.commit(); }
其中Encryto.doRawData是一個So層的方法,去看看,檢視字串
有兩個可疑的字串,一個應該是Base64的table,另一個應該是一個Base64
檢視doRawData程式碼
AES加密,又看見這個so裡面已經有AES解密函式。按X檢視解密函式的引用,一路追回去,被一個名為decode的函式引用,與decode相對應還有一個encode,檢視encode函式和doRawData一模一樣。再回到Java層檢視誰呼叫了decode函式。發現在FileDataActivity中呼叫。
但是他解碼的不是剛才上面的那串。兩個都嘗試一下。第二個是正確的,解出來就是flag。
總結
這題有點迷,有點無厘頭。首先找不到使用者名稱密碼,其次看不懂呼叫關係,不知道這個APP的執行流程,flag也來得莫名其妙。不是很明白出題人的意圖。