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
でログインしてみると
Your new PASSCODE is: check_your_db_before_building_app
がflagとなるあとはsha1にして
WhiteHat{254eb81a7b439405a5d006eb7cfdf0cd841c6d28}