Dai Lai Lake Writeup

WhiteHat Contest13で解けなかったDai Lai LakeのWriteup。

正直ggr力が足りなかっただけの問題(正直知るかって感じがある)

Dai Lai Lake

問題文

Can you find my sensitive infomation?

Dai Lai has acquired a reputation for the land of graceful mountains and debonair water

Download file:

http://material.wargame.whitehat.vn/contests/13/passcode.zip

Writeup

apkが配られるので、いつものようにMainActivity.jadを見てみる

public void onClick(View view)
            {
                if(!keyPadLockedFlag)
                {
                    view = (Button)view;
                    if(userEntered.length() < 4)
                    {
                        userEntered = (new StringBuilder()).append(userEntered).append(view.getText()).toString();
                        Log.v("PinView", (new StringBuilder()).append("User entered=").append(userEntered).toString());
                        passwordInput.setText((new StringBuilder()).append(passwordInput.getText().toString()).append("*").toString());
                        if(userEntered.length() == 4)
                        {
                            view = new DataBase(MainActivity.this);
                            try
                            {
                                view.createDataBase();
                            }
                            // Misplaced declaration of an exception variable
                            catch(View view)
                            {
                                throw new Error("Unable to create database");
                            }
                            try
                            {
                                view.openDataBase();
                            }
                            // Misplaced declaration of an exception variable
                            catch(View view)
                            {
                                throw view;
                            }
                            if(view.getAllNotes().contains(userEntered))
                            {
                                statusView.setTextColor(0xff00ff00);
                                statusView.setText("Correct");
                                error = 0;
                                return;
                            }
                            MainActivity mainactivity = MainActivity.this;
                            mainactivity.error = mainactivity.error + 1;
                            if(error == 5)
                            {
                                final Dialog commentDialog = new Dialog(MainActivity.this);
                                commentDialog.setContentView(0x7f04002f);
                                ((Button)commentDialog.findViewById(0x7f0b008a)).setOnClickListener(view. new android.view.View.OnClickListener() {

                                    public void onClick(View view)
                                    {
                                        view = ((EditText)commentDialog.findViewById(0x7f0b0089)).getText().toString();
                                        String s = String.format("%04d", new Object[] {
                                            Integer.valueOf((new Random()).nextInt(9999))
                                        });
                                        db.Add(view, s);
                                        (new SendMail(_fld0, view, "PASSCODE", (new StringBuilder()).append("Your new PASSCODE is: ").append(s).toString())).execute(new Void[0]);
                                        commentDialog.dismiss();
                                    }

ここだけ見てもおそらくデータベースから照合していることを察した。で詳しく見ていくとassets/内にsqliteがあるので中を見てみる

$ sqlite3 passcode.sqlite
sqlite> .tables
user     zadminz
sqlite> select * from user;
1|xxx@gmail.com|1234
2|aaa@gmail.com|3333
sqlite> select * from zadminz;
1|admin_contest_05@spamdecoy.net|7777
sqlite> 

情報通り1234と3333でOKとかでる。zadminzの内容がflagなのかと試したけどハズレ。ここで止まってた

Writeupを見てみたらspamdecoy.netという囮のメールのものがあるらしい

そこでメールアドレスさえわかっていればメールが読める。なのでadmin_contest_05@spamdecoy.netでログインしてみると

f:id:kataware8136:20170601223138p:plain

f:id:kataware8136:20170601223159p:plain

Your new PASSCODE is: check_your_db_before_building_appがflagとなるあとはsha1にして

WhiteHat{254eb81a7b439405a5d006eb7cfdf0cd841c6d28}