picoCTF 2022 | patchme.py WriteUp
Bu yazıda, picoCTF platformunda yer alan “patchme.py” isimli meydan okumayı çözeceğiz. Elimizde “patchme.flag.py” ve “flag.txt.enc” olmak üzere iki dosya var. Bayrağın bulunduğu dosyada anlamsız yazılar bulunuyor, python dosyasının içeriği ise aşağıdaki şekilde.
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
### THIS FUNCTION WILL NOT HELP YOU FIND THE FLAG --LT ########################
def str_xor(secret, key):
#extend key to secret length
new_key = key
i = 0
while len(new_key) < len(secret):
new_key = new_key + key[i]
i = (i + 1) % len(key)
return "".join([chr(ord(secret_c) ^ ord(new_key_c)) for (secret_c,new_key_c) in zip(secret,new_key)])
###############################################################################
flag_enc = open('flag.txt.enc', 'rb').read()
def level_1_pw_check():
user_pw = input("Please enter correct password for flag: ")
if( user_pw == "ak98" + \
"-=90" + \
"adfjhgj321" + \
"sleuth9000"):
print("Welcome back... your flag, user:")
decryption = str_xor(flag_enc.decode(), "utilitarian")
print(decryption)
return
print("That password is incorrect")
level_1_pw_check()
Python dosyasını çalıştırdığımızda ilk “olarak level_1_pw_check()” isimli fonksiyon çalışacak. Bu fonksiyonda önce parola sorulduğunu, parola doğru ise bayrağın çözülüp ekrana yazdırıldığını görüyoruz. Parolayıda vermiş zaten, sadece birleştirmemiz gerekiyor.
1
2
3
4
C:\Users\Appdone\Desktop>python patchme.flag.py
Please enter correct password for flag: ak98-=90adfjhgj321sleuth9000
Welcome back... your flag, user:
picoCTF{**********************}
This post is licensed under CC BY 4.0 by the author.