babycrypto -- CSAW2018 Quals
Points: 50
Solves: 295
Description:
yeeet
what is yeet?
yeet is yeet
Yeetdate: yeeted yeet at yeet: 9:42 pm
flag format:
flag{...}
Given:
Solution:
(by L0rdComm4nder)
Description
This was a quite straightforward challenge. Looking at ciphertext.txt
it looks like a base64
encoded string.
s5qQkd+WjN+e34+NkJiNnpKSmo3fiJeQ356Mj5aNmozfi5DfnI2anoua34+NkJiNnpKM34uXnovfl5qTj9+PmpCPk5rfm5Dfk5qMjNHft5rfiJ6Ri4zfi5Dfj4qL356Ki5CSnouWkJHfmZaNjIvT356Rm9+MnJ6Tnp2Wk5aLht+ek5CRmIyWm5rR37ea35uNmp6SjN+Qmd+e34iQjZOb34iXmo2a34uXmt+akZuTmoyM356Rm9+Ll5rflpGZlpGWi5rfnZqckJKa342anpOWi5aajN+LkN+SnpGUlpGb09+ekZvfiJeajZrfi5ea34uNiprfiZ6TiprfkJnfk5aZmt+WjN+PjZqMmo2JmpvRmZOemISblpmZlprSl5qTk5KekdKYz4+XzI2FjZ6wps61npPLnLeeuabGrKithr6uyZ63gg==
Decoding it does not give us anything meaningfull so we apply the first trick in our bag of tricks, brute force xor
on every character looking for flag{
, and voilà.
Leon is a programmer who aspires to create programs that help people do less. He wants to put automation first, and scalability alongside. He dreams of a world where the endless and the infinite become realities to mankind, and where the true value of life is preserved.flag{diffie-hellman-g0ph3rzraOY1Jal4cHaFY9SWRyAQ6aH}
The full script is below:
import base64
with open('ciphertext.txt' , 'r') as f:
cipher = f.read().strip()
print cipher
print '\n', '*' * 80, '\n'
print base64.b64decode(cipher)
print '\n', '*' * 80, '\n'
def brute_force_xor(s):
for i in range(256):
decoded = "".join(map(lambda(x): chr(ord(x)^i), s))
if 'flag' in decoded:
print decoded
brute_force_xor(base64.b64decode(cipher))