阿里移動安全 Writeup

0x0

弱菜愚昧,14年的東西, 現在才做, 不過,加油就行。

0x1

第一題

直接上代碼

 String v3 = this.val$edit.getText().toString();
                String v5 = MainActivity.this.getTableFromPic();
                String v4 = MainActivity.this.getPwdFromPic();
                Log.i("lil", "table:" + v5);
                Log.i("lil", "pw:" + v4);
                try {
                    String v2 = MainActivity.bytesToAliSmsCode(v5, v3.getBytes("utf-8"));
                    Log.i("lil", "enPassword:" + v2);
                }
                catch(UnsupportedEncodingException v1) {
                    v1.printStackTrace();
                }

                if(v4 == null || (v4.equals("")) || !v4.equals(v2)) {
                    AlertDialog$Builder v0 = new AlertDialog$Builder(MainActivity.this);
                    v0.setMessage(2131361809);
                    v0.setTitle(2131361808);
                    v0.setPositiveButton(2131361811, new DialogInterface$OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {

看完代碼就一個思路, 從圖片獲取一個table, passwd 。 然後根據我們的輸入從table找一個偏移, 將連接後的字符串與passwd 比較。 這裏因爲有Log.i 所以DDMS裏看一下就很明顯了。 passwd is 581026

第二題


    static {
        System.loadLibrary("crackme");
    }
       public native boolean securityCheck(String arg1) {
    }
        public void onClick(View v) {
                if(MainActivity.this.securityCheck(MainActivity.this.inputCode.getText().toString())
                        ) {
                    MainActivity.this.startActivity(new Intent(MainActivity.this, ResultActivity.class));
                }
                else {
                    Toast.makeText(MainActivity.this.getApplicationContext(), "驗證碼校驗失敗", 0).show();
                }

關鍵的就這麼幾行 , 這裏指示我們要去native 層找線索, 直接把lib拖進ida.
有個關鍵的對比 ,但是並不正確, 猜測可能是javahook 之類的。
動態調試吧。 IDA附加到apk的流程這裏不多說了,只是一開始attachapk就掛了,沒辦法 ,就用jdb斷在JNI_onLoad上,然後就是運行一下去看原來的那個字符串, 發現現在是aiyou,bucuoo了。

第三題

今天暫時到這裏
有興趣的朋友可以看看看雪的writeup , 兩個大牛都很贊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章