menu FzWjScJの菜鸡记录
2020网鼎杯青龙签到记
659 浏览 | 2020-05-10 | 阅读时间: 约 1 分钟 | 分类: CTF | 标签: misc,CTF,crypto
请注意,本文编写于 166 天前,最后修改于 162 天前,其中某些信息可能已经过时。

呜呜呜赛后我和队友才出俩flag,可惜了这201名。就差亿点点就进线下了QwQ


2020网鼎杯签到记

MISC

签到

Description

Weclome~!

Analyze

登上环境,答题,各个战队的图标,答完题后console或抓包即可得到flag。

Solve

flag

flag{daa5e194d9cbf58833ff3f7a76caa36f}

虚幻2

Description

18年虚幻被打的很惨,2年后虚幻卷土重来。

附件下载 提取码:(b5kt) 备用下载

1. 汉信码 2. 图片要转转 3. 暴力修补

Analyze

开始是一个file文件,看头易得是png

然后stegsolve后分离RGB三个轨道的值,再旋转下得到

然后经过许久的尝试(包括excel手撸等等操作后)得到思路为逐列提取,于是脚本一把梭,得到图片

from PIL import Image
# import itertools
p = ['G','B','R']
# p1 = Image.open('file.png')
R_pixels = []
G_pixels = []
B_pixels = []
for i in range(3):
    if i == 0:
        p1 = Image.open(p[i]+'.png').convert('L')
        a,b = p1.size
        for x in range(a):
            if x < 1:
                continue
            pixel = []
            for y in range(b):
                if y < 2 or y > 33:
                    continue
                pp = p1.getpixel((x,y))
                pixel.append(pp)
            else:
                G_pixels.append(pixel)
    elif i == 1:
        p1 = Image.open(p[i] + '.png').convert('L')
        a, b = p1.size
        for x in range(a):
            if x < 1 or x > 10:
                continue
            pixel = []
            for y in range(b):
                if y < 2 or y > 33:
                    continue
                pp = p1.getpixel((x, y))
                pixel.append(pp)
            else:
                B_pixels.append(pixel)
    else:
        p1 = Image.open(p[i] + '.png').convert('L')
        a, b = p1.size
        for x in range(a):
            if x < 2:
                continue
            pixel = []
            for y in range(b):
                if y < 2 or y > 33:
                    continue
                pp = p1.getpixel((x, y))
                pixel.append(pp)
            else:
                R_pixels.append(pixel)
b = Image.new('L',(10,10),255)
w = Image.new('L',(10,10),0)
n_p = Image.new('L',(310,310),0)
for i in range(11):
    if i != 10:
        for j in range(len(G_pixels[i])):
            if G_pixels[i][j] == 0:
                n_p.paste(w,(i*30,j*10))
            elif G_pixels[i][j]  == 255:
                n_p.paste(b,(i*30,j*10))
        for j in range(len(B_pixels[i])):
            if B_pixels[i][j]  == 0:
                n_p.paste(w,(i*30+10,j*10))
            elif B_pixels[i][j]  == 255:
                n_p.paste(b,(i*30+10,j*10))
        for j in range(len(R_pixels[i])):
            if R_pixels[i][j]  == 0:
                n_p.paste(w,(i*30+20,j*10))
            elif R_pixels[i][j]  == 255:
                n_p.paste(b,(i*30+20,j*10))
    else:
        for j in range(len(G_pixels[i])):
            if G_pixels[i][j]  == 0:
                n_p.paste(w,(i*30,j*10))
            elif G_pixels[i][j]  == 255:
                n_p.paste(b,(i*30,j*10))

n_p.save('res.png')

然后旋转左下定位点再镜像得到

然后这步操作比赛结束了想到了。。。。就是随机放个色块然后马赛克,强行误码让他自修复。得到

flag

flag{eed70c7d-e530-49ba-ad45-80fdb7872e0a}

Crypto

boom

Description

Boom there have a game.

附件下载 提取码:(5w89) 备用下载

Analyze

易得,答题解答就行

1.

en5oy

2.

3.

得到flag

flag

flag{en5oy_746831_89127561}

you raise me up

Description

you raise me up.

附件下载 提取码:(c6eh) 备用下载

Analyze

sage离散对数求解算e

m = 391190709124527428959489662565274039318305952172936859403855079581402770986890308469084735451207885386318986881041563704825943945069343345307381099559075
c = 6665851394203214245856789450723658632520816791621796775909766895233000234023642878786025644953797995373211308485605397024123180085924117610802485972584499
n = 2 ** 512
m = Mod(m,n)
c = Mod(c,n)
discrete_log(c,m)

flag

flag{5f95ca93-1594-762d-ed0b-a9139692cb4a}

发表评论

email
web

全部评论 (暂无评论)

info 还没有任何评论,你来说两句呐!