Post

picoCTF 2022 | Safe Opener WriteUp

Bu yazıda, picoCTF platformunda yer alan “Safe Opener” isimli meydan okumayı çözeceğiz. Meydan okumanın açıklamasında bulunması gereken parolayı bulduktan sonra picoCTF{parola} formatına çevirmemiz gerektiğini söylüyor.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.io.*;
import java.util.*;  
public class SafeOpener {
    public static void main(String args[]) throws IOException {
        BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
        Base64.Encoder encoder = Base64.getEncoder();
        String encodedkey = "";
        String key = "";
        int i = 0;
        boolean isOpen;

        while (i < 3) {
            System.out.print("Enter password for the safe: ");
            key = keyboard.readLine();

            encodedkey = encoder.encodeToString(key.getBytes());
            System.out.println(encodedkey);
              
            isOpen = openSafe(encodedkey);
            if (!isOpen) {
                System.out.println("You have  " + (2 - i) + " attempt(s) left");
                i++;
                continue;
            }
            break;
        }
    }
    
    public static boolean openSafe(String password) {
        String encodedkey = "cGwzYXMzX2wzdF9tM18xbnQwX3RoM19zYWYz";
        
        if (password.equals(encodedkey)) {
            System.out.println("Sesame open");
            return true;
        }
        else {
            System.out.println("Password is incorrect\n");
            return false;
        }
    }
}

Verilen kaynak kodunun içerisinde base64 ile kodlanmış parolayı görüyoruz. CyberChef ile çözdükten sonra istenen formata çeviriyor, böylece bayrağı elde etmiş oluyoruz.

This post is licensed under CC BY 4.0 by the author.