Tags: 2021 reklest justctf re 

Rating:

  1. Decode the javascript filename.
#!/usr/bin/python3

from struct import pack
from base64 import b64decode

p64 = lambda x : pack("<Q", x)

a = [0x0A884DF8AB2FBC902, 0x0E0D28ACBFB46461A, 0x6178F0BE4CD508AC, 0x603AD81291B66724, 0x0DE5CDDE19279A148, 0x70E60361F80E8EB4]
b = [0xD8BDEEE9C2938E66, 0xD598D291C97F7779, 0xD32C3E736983BF4, 0xC428F73FC8F2140, 0xA419A7AFE834F505, 0x4DAB6D008D6DF4F9]

r = b''

for x, y in zip(a, b):
    r += p64(x ^ y)

print(r)

decoded = b64decode(r)
print(decoded)

# this_is_very_s3cret_file13371337.js
  1. Decode the flag.
#!/usr/bin/python3

enc = b'{rewJey\x00bnF\x05B_EnEC\x00RZHnSD\x06nCdbEn]\x01\x01ZBnbR\x05CHL'

dec = b'JCTF{'

key = []

for a, b in zip(enc, dec):
    key.append(a ^ b)

# print(bytes(key))

key = [ 0x31 ] * len(enc)

plain = []
for a, b in zip(key, enc):
    plain.append(a ^ b)

print(bytes(plain))

# JCTF{TH1S_w4snt_tr1cky_bu7_rUSt_l00ks_Sc4ry}
Original writeup (https://github.com/epicleet/write-ups/tree/master/2021/justctf/re/reklest).