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}