picoCTF2019 Reverse Engineering WriteUP
picoCTF2019のReverse Engineering分野のWriteUPを書く
Reverse Engineering
vault-door-training (50pt)
渡されたjavaのソースコードにフラグがあるので、
素直にエディタで開いてみる。
パスワードをソースコードに直接書くのはあかんやつ...
// The password is below. Is it safe to put the password in the source code? // What if somebody stole our source code? Then they would know what our // password is. Hmm... I will think of some ways to improve the security // on the other doors. // // -Minion #9567 public boolean checkPassword(String password) { return password.equals("w4rm1ng_Up_w1tH_jAv4_c0b141c5e30"); } }
picoCTF{w4rm1ng_Up_w1tH_jAv4_c0b141c5e30}
vault-door-1 (100pt)
渡されたjavaのソースコードにフラグがあるが、
パスワードチェックの関数で文字がシャッフルされていた。
並び替えてフラグゲット
// I came up with a more secure way to check the password without putting // the password itself in the source code. I think this is going to be // UNHACKABLE!! I hope Dr. Evil agrees... // // -Minion #8728 public boolean checkPassword(String password) { return password.length() == 32 && password.charAt(0) == 'd' && password.charAt(29) == '7' && password.charAt(4) == 'r' && password.charAt(2) == '5' && password.charAt(23) == 'r' && password.charAt(3) == 'c' && password.charAt(17) == '4' && password.charAt(1) == '3' && password.charAt(7) == 'b' && password.charAt(10) == '_' && password.charAt(5) == '4' && password.charAt(9) == '3' && password.charAt(11) == 't' && password.charAt(15) == 'c' && password.charAt(8) == 'l' && password.charAt(12) == 'H' && password.charAt(20) == 'c' && password.charAt(14) == '_' && password.charAt(6) == 'm' && password.charAt(24) == '5' && password.charAt(18) == 'r' && password.charAt(13) == '3' && password.charAt(19) == '4' && password.charAt(21) == 'T' && password.charAt(16) == 'H' && password.charAt(27) == '1' && password.charAt(30) == 'f' && password.charAt(25) == '_' && password.charAt(22) == '3' && password.charAt(28) == 'e' && password.charAt(26) == '5' && password.charAt(31) == 'd'; } } //picoCTF{d35cr4mbl3_tH3_cH4r4cT3r5_51e7fd}