ISCC2022-Misc-Writeup

2022-5-25 CTFWriteupMiscISCC2022

第19届信息安全与对抗技术竞赛(ISCC2022) 个人挑战赛 Misc方向部分题目Writeup

# 2022冬奥会

2022冬奥会在北京举办,身为东道主的你知道此次冬奥会的吉祥物分别是谁吗?并且你知道这两只冬奥会的吉祥物最初设计的原型分别是什么吗?我只能提示你其中有一只的原型是我们的国宝哦。

修改图片高度,在原图下方看到编码

冰墩墩的小伙伴经常被人冷落,你知道它的原型是什么吗?
1

Unicode编码转换 - 站长工具 (chinaz.com) (opens new window):Unicode转中文

冰墩墩的小伙伴经常被人冷落,你知道它的原型是什么吗?
1

所以解压密码是灯笼,解压后拿到flag

ISCC{beij-dahb-1048}
1

# 单板小将苏翊鸣

在此次冬季奥运会项目中,17岁的单板小将苏翊鸣在单板项目中获得一金一银的优异成绩,打破了多年来中国队的历史最好成绩,为中国队此次冬奥之行锦上添花。

计算图片的实际宽高

import struct
import zlib

def hexStr2bytes(s):
    b = b""
    for i in range(0,len(s),2):
        temp = s[i:i+2]
        b +=struct.pack("B",int(temp,16))
    return b

str1="49484452"
str2="0806000000"
bytes1=hexStr2bytes(str1)
bytes2=hexStr2bytes(str2)

wid,hei = 0x3e8, 0x198
crc32 = "0x027db6c8"

for w in range(wid,wid+2000):
    for h in range(hei,hei+2000):
        width = hex(w)[2:].rjust(8,'0')
        height = hex(h)[2:].rjust(8,'0')
        bytes_temp=hexStr2bytes(width+height)
        if eval(hex(zlib.crc32(bytes1+bytes_temp+bytes2))) == eval(crc32):
            print(hex(w),hex(h))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
0x3e8 0x42c
1

修改后得到

扫码得

\u5728\u8fd9\u6b21\u51ac\u5965\u4f1a\u7684\u821e\u53f0\u4e0a\uff0c\u6211\u56fd\u5c0f\u5c06\u82cf\u7fca\u9e23\u65a9\u83b7\u4e00\u91d1\u4e00\u94f6\uff0c\u90a3\u4f60\u77e5\u9053\u6b64\u6b21\u51ac\u5965\u4f1a\u6211\u56fd\u603b\u5171\u83b7\u5f97\u51e0\u679a\u5956\u724c\u5417\uff1f\u53c8\u5206\u522b\u662f\u51e0\u91d1\u51e0\u94f6\u51e0\u94dc\u5462\uff1f
1

Unicode编码转换 - 站长工具 (chinaz.com) (opens new window):Unicode转中文:

在这次冬奥会的舞台上,我国小将苏翊鸣斩获一金一银,那你知道此次冬奥会我国总共获得几枚奖牌吗?又分别是几金几银几铜呢?
1

上网搜索:

15枚奖牌、9枚金牌、4枚银牌、2枚铜牌
1

所以压缩包密码为:15942,解压得到flag

ISCC{beij-dbxj-2041}
1

# 隐秘的信息

乐乐在开始做作业时,遇到了一串ZWFzeV90b19maW5kX3RoZV9mbGFn字符串,研究了一番,什么都没有发现。乐乐能找到隐秘的信息并完成作业吗?

ZWFzeV90b19maW5kX3RoZV9mbGFn
1

base64解码得到压缩包密码

easy_to_find_the_flag
1

lsb隐写,但前面有多余的1,手动去掉后转为字符即可

flag = "ffa4a9a1a1bdac269a25a49aa725bc3822b5b3aa341c98992130befc01f8007f"

msg = ""
for i in range(0, len(flag), 2):
    msg += bin(int(flag[i:i+2], 16)).replace("0b", "").zfill(8)
count = 0
while msg[count] == "1":
    count += 1
flag = msg[count:]
for i in range(0, len(flag), 8):
    print(chr(int(flag[i:i+8], 2)),end="")
1
2
3
4
5
6
7
8
9
10
11

ISCC{XM4KI5NKxpEkgTh912Ba}
1

# 降维打击

降维打击 flag格式:ISCC{xxxx-xxxx-xxxx}

用010editor打开图片,发现还有一张图片,另存为flag.png

使用zsteg查看图片,发现里面还有一张图片

提取出来

zsteg -e b1,r,lsb,yx flag.png > 1.png
1

手动查找得到flag:《魔女之旅》文字破解·印刷体 - 哔哩哔哩 (bilibili.com) (opens new window)

ISCC{GMXD-AGAB-SMXU}
1

# 藏在星空中的诗-1

漫天的繁星也许是一首美丽的诗!(建议使用winRAR)

1:☆✪٭☪✲
2:✡🟇⍟⍟✸
3:🟆⍟✴✴🟆
4:🟇🟔🟉✦✪
5:✮٭٭✦🞱
1
2
3
4
5

所以密码为

☆✪٭☪✲🟆⍟✴✴🟆✮٭٭✦🞱✡🟇⍟⍟✸🟇🟔🟉✦✪
1

之后就是替换了,按照txt的顺序:12345

import xlrd

flag = '☆✪٭☪✲✡🟇⍟⍟✸🟆⍟✴✴🟆🟇🟔🟉✦✪✮٭٭✦🞱'

m = []
for i in flag:
    m.append(hex(ord(i)).replace('0x', '').upper().zfill(4))

key = xlrd.open_workbook('key_to_the_Poem.xlsx')
sheet = key.sheet_by_index(0)

dic = {}
for row in sheet.get_rows():
    dic[row[2].value.strip().replace('U+', '')] = row[0].value

for i in m:
    print(dic[i], end='')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
FLAG=ISCC{XCPPXSZUJLNAAJ}
1

# 藏在星空中的诗-2

漫天的繁星也许是另一首美丽的诗!

\🌟🌠🌠✴🟉\🌟🌠🌠★⍣\🌟🌠🌠✴⍣\🌟🌠🌠✴⍣\🌟🌠🌠✧≛\🌟🌠🌠⍣☆\🌟🌠🌠☆⚝\🌟🌠🌠✲🟉\🌟🌠🌠✧🌠\🌟🌠🌠★☪\🌟🌠🌠⍣⚝\🌟🌠🌠⍣⚝\🌟🌠🌠★☪\🌟🌠🌠★✲\🌟🌠🌠★✸\🌟🌠🌠☆🟌\🌟🌠🌠✧✡\🌟🌠🌠★✴\🌟🌠🌠☆✴\🌟🌠🌠✧⚝
1

格式都是\🌟🌠🌠+xx,将每组的最后两个字符转为Unicode编码

0x2734 0x1f7c9 0x2605 0x2363 0x2734 0x2363 0x2734 0x2363 0x2727 0x225b 0x2363 0x2606 0x2606 0x269d 0x2732 0x1f7c9 0x2727 0x1f320 0x2605 0x262a 0x2363 0x269d 0x2363 0x269d 0x2605 0x262a 0x2605 0x2732 0x2605 0x2738 0x2606 0x1f7cc 0x2727 0x2721 0x2605 0x2734 0x2606 0x2734 0x2727 0x269d 
1

取每个Unicode编码的最后一个字符,即49534343...,可以看到是ISCC的ASCII值

flag = r'\🌟🌠🌠✴🟉\🌟🌠🌠★⍣\🌟🌠🌠✴⍣\🌟🌠🌠✴⍣\🌟🌠🌠✧≛\🌟🌠🌠⍣☆\🌟🌠🌠☆⚝\🌟🌠🌠✲🟉\🌟🌠🌠✧🌠\🌟🌠🌠★☪\🌟🌠🌠⍣⚝\🌟🌠🌠⍣⚝\🌟🌠🌠★☪\🌟🌠🌠★✲\🌟🌠🌠★✸\🌟🌠🌠☆🟌\🌟🌠🌠✧✡\🌟🌠🌠★✴\🌟🌠🌠☆✴\🌟🌠🌠✧⚝'

lst = [i[3:] for i in flag[1:].split("\\")]
for i in lst:
    index = hex(ord(i[0]))[-1] + hex(ord(i[1]))[-1]
    print(chr(int(index, 16)), end="")

# print(''.join([chr(int(hex(ord(i[3]))[-1] + hex(ord(i[4]))[-1], 16)) for i in flag[1:].split("\\")]))
1
2
3
4
5
6
7
8
ISCC{6m)pZ==ZRXlqTd}
1

# 真相只有一个

misc是英文miscellaneous的前四个字母,表示有杂项、混合体、大杂烩的意思,题目思路广,模式不定,线索众多,在这些线索中有的有用有的没用,最终的真相只有一个。

用Stegsolve查看entity.png,lsb隐写

用010editor查看stream文件,发现文件末有PK,猜测是zip文件,修改文件头的00 0050 4B,改后缀为zip,需要密码

直接选择掩码爆破压缩包密码

密码为19981111,解压后是个流量包,TFTP里有个mp3文件

用Audacity打开,在最后面是摩斯密码

.. ... -.-. -.-. -- .. ... -.-.
1

摩斯密码 摩斯密码表 摩尔斯电码转换 (ip138.com) (opens new window)

ISCCMISC
1

尝试之后发现是snow隐写

SNOW.EXE -p isccmisc -C flag.txt
1

ISCC{JTq8-sHtb-J90q}
1

# 小光学AI

小光同学最近在学习人工智能技术,看了周志华老师的西瓜书后,感觉自己又行了。 这次他找来了三种水果的图片:黄瓜、茄子和蘑菇,研究的第一步是区分这三种水果,将三种水果分类;第二步是图像分割,选中目标区域,目标区域指的是能够覆盖图片中水果区域的最小矩形。 做完后小光同学计算出了三种水果目标区域的像素和A,B,C(0<A,B,C<10^9),发现这些像素和可以化简到x:y:z,其中(0<x,y,z<10),你可以找到A,B,C三者的实际值之比吗(格式A:B:C)?

Flag格式:ISCC{XXX}

选择字典爆破

msg = []
for x in range(1, 10):
    for y in range(1, 10):
        for z in range(1, 10):         
            for i in range(400000):
                msg.append('%s:%s:%s' % (x*i, y*i, z*i))

    with open('dic.txt', 'a') as f:
        for i in msg:
            f.write(i + '\n')
    msg = []
1
2
3
4
5
6
7
8
9
10
11

会生成一个6.77G的字典文件

使用ARCHPR直接爆破

密码为

37035:49380:61725
1

解压拿到flag

ISCC{rx53-U3CF-Lzo4}
1