
Kita dikasih cipher.txt yang isi pesannya sama kayak di deskripsi.
60_ZMZ_GBWKNREM_KRA__LQM}WEPRGQL__Q_{RWW_M_KIAGPMNMRXDLM_FMWLDQ0BOIAMNPG
Kalau kita perhatikan baik-baik dari deskripsi challenge ada kosakata yang agak unik yakni wheelbarrow dari bentukan challenge nya saya curiga ini adalah classic cipher, ya saya searching aja wheelbarrow cipher dan wheelbarrow cipher writeup. ditemukan lah writeup ini yang merujuk ke link ini. Ya kita masukkan aja ke situ. kita dapet gini :

jelas apa? yoii, jelas yang kita ambil adalah LWPMGMP{NRN_XWL_BDWO_MZA_PRIQM_QLKQMRMLMRWD_GRFZAI_NEMAQ_KEGB_MW_600_KG}. karena bentukannya kayak flag. nah disini saya curiga bahwa depannya uoftctf yang ternyata cocok dengan lwpmgmp, nah jelas ini subtitution cipher uma belum tentu caesar, jadi kita asumsi aja ini mono-alphabetic cipher ya gaes, kita bisa pakai ini


jelas yang paling atas readable, tinggal kita tulis ulang aja dan kita sesuaikan sedikit.

DIberikan aes-cbc.py dan servis netcat yang isinya sebagai berikut :
from base64 import b64encode, b64decode
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
print("Welcome to the AES-CBC oracle!")
key = open("key", "rb").read()
while True:
print("Do you want to encrypt the flag or decrypt a message?")
print("1. Encrypt the flag")
print("2. Decrypt a message")
choice = input("Your choice: ")
if choice == "1":
cipher = AES.new(key=key, mode=AES.MODE_CBC)
ciphertext = cipher.iv + \\
cipher.encrypt(pad(b"random", cipher.block_size))
print(f"{b64encode(ciphertext).decode()}")
elif choice == "2":
line = input().strip()
data = b64decode(line)
iv, ciphertext = data[:16], data[16:]
cipher = AES.new(key=key, mode=AES.MODE_CBC, iv=iv)
try:
plaintext = unpad(cipher.decrypt(ciphertext),
cipher.block_size).decode('latin1')
except Exception as e:
print("Error!")
continue
if plaintext == "I am an authenticated admin, please give me the flag":
print("Victory! Your flag:")
print(open("flag.txt").read())
else:
print("Unknown command!")