BuzzOverflow CTF
BuzzOverflow CTF Writeups
Reversing
xxxxx
Find and replace the function calls with the function return values and then cleanup the code. Then after some modifications we can get the following code to find the flag:
a = [3,3,1, 3,1,3, 3, 1, 1,3, 1,1,3, 1, 3, 3,1, 1, 1, 13,1, 1, 1, 1, 1, 3, 1, 1]
b = [4,8,67,1,7,1, 13,11,7,11,4,5,17,19,17,4,41,19,11,2, 17,19,1, 3, 109,17,53,25]
c = [4,1,1, 4,2,41,1, 2, 1,1, 4,4,1, 1, 2, 4,2, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1]
d = [1,5,1, 7,5,1, 3, 5, 7,3, 3,5,1, 5, 1, 1,1, 5, 5, 1, 3, 5, 109,17,1, 1, 1, 5]
flag = [''] * 28
flag[0] = chr(a[0] * b[0] * c[0] * d[0])
flag[1] = chr(a[1] * b[1] * c[1] * d[1])
flag[1+1] = chr(a[1+1] * b[1+1] * c[1+1] * d[1+1])
flag[1+1+1] = chr(a[1+1+1] * b[1+1+1] * c[1+1+1] * d[1+1+1])
flag[1+1+1+1] = chr(a[1+1+1+1] * b[1+1+1+1] * c[1+1+1+1] * d[1+1+1+1])
flag[1+1+1+1+1] = chr(a[1+1+1+1+1] * b[1+1+1+1+1] * c[1+1+1+1+1] * d[1+1+1+1+1])
flag[1+1+1+1+1+1] = chr(a[1+1+1+1+1+1] * b[1+1+1+1+1+1] * c[1+1+1+1+1+1] * d[1+1+1+1+1+1])
flag[1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1])
flag[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] = chr(a[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * b[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * c[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1] * d[1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1])
print(''.join(flag))
Flag: 0xCTF{un1c0d3_f0R_7h3_m3m35}
elfish
It looks like the magic number of the ELF binary is corrupted.
Modify the first four bytes of the file using a tool like Hexed.it to the elf headers (7F, ‘E’, ‘L’, ‘F’).
Change the permissions and run the modified binary to get the flag:
Flag: 0xCTF{y_U_g0tta_b_s0_elf1$h}
Forensics
Pixelated secrets 1
Opening the image with stegsolve, there seems to be some hidden data in the blue plane:
So trying to extract the information from the blue plane using python:
from PIL import Image
im = Image.open('easy_version.png')
px = im.load()
def decode_binary_string(s):
return ''.join(chr(int(s[i*8:i*8+8],2)) for i in range(len(s)//8))
print(decode_binary_string(''.join([str(px[0, y][2]) for y in range(256)])))
Flag: CTF{22s05a2005}
Uber Bug Bounty
There is a GMX file given in the chall. I’m not sure what the file actually is, but running strings on the file reveals this:
Here we can see there is an embedded Thumbnail file (JPEG). So using a hexedit program, deleting the bytes from the beginning till <Thumbnail.jpg>
and from </Thumbnail.jpg>
till the end, we get the jpeg image:
On rotating and flipping the image, we get the flag:
Flag: CTF{FASTASF}
Pixelated Secrets 2
This is similar to Pixelated Secrets 1, but the data is in the first row instead of the first column.
Extracting the data:
from PIL import Image
im = Image.open('hard_version.png')
px = im.load()
def decode_binary_string(s):
return ''.join(chr(int(s[i*8:i*8+8],2)) for i in range(len(s)//8))
res = ''.join([str(px[x, 0][2]) for x in range(256)])
print(res)
We get the binary string: 0001000000000101000100010001000000010000000101000001010101000101000100010000010100000101000001010001010000000101000101010001000100010101000001000001010000010001000100010101010100000101000001000000010100000100000101010101000100000000000000000000000000000000
. There seems to be unnecessary zeros in every odd position. Getting rid of those:
res = ''.join(res[x] for x in range(1, len(res), 2))
print(decode_binary_string(res))
Flag: CTF{S3cure_22}
Crypto
The Emperor’s Secret
Ciphertext: Jodg_brx_uhphpehu_ph
Caesar cipher with shift 23: https://cryptii.com/pipes/caesar-cipher
Flag: 0xCTF{Glad_you_remember_me}
Nature’s Secret
Chall:
Decode using bird cipher: https://www.dcode.fr/birds-on-a-wire-cipher
Flag: 0xCTF{birdsonawiregochirpchirpchip}
Does size matter?
Given n, d, ciphertext, we can get the plaintext:
c = 46163498626677786993275746470510
n = 50537019332326445555049589372337
d = 49623239819855508877100187645953
print(pow(c,d,n))
The original message is: 531095210810895110, which is a concatenation of ascii characters. Decoding this:
print(''.join(chr(x) for x in [53, 109, 52, 108, 108, 95, 110]))
Flag: 0xCTF{5m4ll_n}
OSINT
Google’s Your Friend
Find image using google reverse image search, find the height of the focus central equity tower.
Flag: 0xCTF{166}
Web
Back To Time
Checking out https://clickme.herocharge.repl.co/ in DevTools, there is a link to https://clickme.herocharge.repl.co/flag.html. Visiting this in web archive, http://web.archive.org/web/20220616185603/https://clickme.herocharge.repl.co/flag.html we get the flag.
Flag: CTF{waaaaaybaaaaackmaaaaachine}