Challenge

from Crypto.Util.number import *
import base64
import os

flag = os.getenv("FLAG", "DUMMYD{DUMMYDUMMYDUMMYDUMMYDUMMYDUMMYDUMMYDUMMYDUMMYDUMMYDUMMY}").encode()
flag1 = flag[:20]
flag2 = flag[20:40]
flag3 = flag[40:]

print(f"long_value = {bytes_to_long(flag1)}")
print(f'hex_string = "{flag2.hex()}"')
print(f'base64_string = "{base64.b64encode(flag3).decode()}"')
long_value = 373502670300504551747111047082539140193958649718
hex_string = "346c5f6833785f6630726d61745f31735f636c33"
base64_string = "NG5fYjY0X3A0ZGQxbmdfaXNfY29vbH0="

Solution

The provided chall.py splits the flag into three parts and prints each part in a different encoding:

chall.txt contains the printed outputs, so we just reverse each encoding and concatenate the results.

Final Script

from Crypto.Util.number import long_to_bytes
import base64

long_value = 373502670300504551747111047082539140193958649718
hex_string = "346c5f6833785f6630726d61745f31735f636c33"
base64_string = "NG5fYjY0X3A0ZGQxbmdfaXNfY29vbH0="

flag1 = long_to_bytes(long_value)
flag2 = bytes.fromhex(hex_string)
flag3 = base64.b64decode(base64_string)

flag = flag1 + flag2 + flag3
print(flag.decode())