vault-door-4 (Reverse Engineering)
This vault uses ASCII encoding for the password. The source code for this vault is here: VaultDoor4.java
添付ファイル
・VaultDoot4.java
ソースコードを確認する。
import java.util.*;
class VaultDoor4 {
public static void main(String args[]) {
VaultDoor4 vaultDoor = new VaultDoor4();
Scanner scanner = new Scanner(System.in);
System.out.print("Enter vault password: ");
String userInput = scanner.next();
String input = userInput.substring("picoCTF{".length(),userInput.length()-1);
if (vaultDoor.checkPassword(input)) {
System.out.println("Access granted.");
} else {
System.out.println("Access denied!");
}
}
// I made myself dizzy converting all of these numbers into different bases,
// so I just *know* that this vault will be impenetrable. This will make Dr.
// Evil like me better than all of the other minions--especially Minion
// #5620--I just know it!
//
// .:::. .:::.
// :::::::.:::::::
// :::::::::::::::
// ':::::::::::::'
// ':::::::::'
// ':::::'
// ':'
// -Minion #7781
public boolean checkPassword(String password) {
byte[] passBytes = password.getBytes();
byte[] myBytes = {
106 , 85 , 53 , 116 , 95 , 52 , 95 , 98 ,
0x55, 0x6e, 0x43, 0x68, 0x5f, 0x30, 0x66, 0x5f,
0142, 0131, 0164, 063 , 0163, 0137, 0146, 064 ,
'a' , '8' , 'c' , 'd' , '8' , 'f' , '7' , 'e' ,
};
for (int i=0; i<32; i++) {
if (passBytes[i] != myBytes[i]) {
return false;
}
}
return true;
}
}
106 85 53 116 95 52 95 98 0x55 0x6e 0x43 0x68 0x5f 0x30 0x66 0x5f 0142 0131 0164 063 0163 0137 0146 064 'a' '8' 'c' 'd' '8' 'f' '7' 'e'
と比較して一致するかを確認している。
CyberChefでasciiコードを文字に変換し、前後にpicoCTF{と}を追加する。
変換は順にFrom Decimal、From Hex、From Octalで、文字はそのまま。
フラグが得られた。
picoCTF{jU5t_4_bUnCh_0f_bYt3s_f4a8cd8f7e}