NKCTF MISC

发布时间 2023-03-30 21:44:12作者: zbclove

NKCTF MISC 复现

hard_misc

JYYHOYLZIJQWG27FQWWOJPEX4WH3PZM3T3S2JDPPXSNAUTSLINKEMMRQGIZ6NCER42O2LZF2Q3X3ZAI=

一看等号首先想到base64,不是那就是base32

两者的区别:

  • base64中包含大写字母(A-Z),小写字母(a-z),数字0—9以及+/;
  • base32中只包含大写字母(A-Z)和数字234567

THMaster

先用dnSpy-net-win32打开,找到THMaster

QQ图片20230329230729

用16hex打开,修改20000000的十六进制码

img

然后保存运行出exe,打游戏直接就满足了分数条件,然后保存录像

image-20230329232208396

image-20230329232216036

最后把第一个文件放进010里,搜索关键字,得到flag

image-20230330084134512

三体

打开是一张bmp文件,思路来源于『整活』如何把百万字小说藏进图片_哔哩哔哩_bilibili

而且在评论区就有现成的脚本可以使用

法一

#-*-coding:gb2312-*-
from PIL import Image
def decode(im):
    width,height = im.size
    lst = []
    for y in range(height):
        for x in range(width):
            red,green,blue = im.getpixel((x,y))
            if(blue | green | red) == 0:
                break
            index = (green<<8) + blue
            lst.append(chr(index))
    return ''.join(lst)

if __name__=='__main__':
    all_text = decode(Image.open("E:\\Desktop\\NKCTF\\Misc\\三体.bmp","r"))
    with open ("1.txt","w",encoding = "utf-8") as f:
        f.write(all_text)

image-20230329195507223

法二

发现最下面有关键字NKCTF

image-20230329200747238

去除干扰项后发现是

image-20230329200905361

然后搜索反括号},得到另一半

image-20230329201223201

佩服大佬这细致观察的能力

法三

zsteg

zsteg 三体.bmp --all

image-20230329213955269

在这个通道可以看到一部分的flag,分离出来这个通道

zsteg -e "b8,b,lsb,xY" santi.bmp >1.txt

image-20230329221947801

easy_bmp

把width和height图片放进010里面,修改宽高得到图片的信息

image-20230330084617697

image-20230330084625819

然后将密码输入,解压flag.rar文件,得到一张flag.bmp,需要修改宽高

查看数据大小为129600字节

image-20230330085000844

这张图因为被改成了单通道图片,所以不需要/3,直接开方得到宽高均是360

image-20230330085217397

保存得到一张二维码,扫码得到flag

最后记录下出题大佬的预期解

我说一下预期解吧 预期解 第一层的 就是单纯的计算洗像素总个数 然后 根据高度算宽度 和根据宽度算高度  然后如果仔细看 有一张修复的图片右下角有个same 其实想说的是下一层宽高相同 然后最里面那个一层就好做了 你知道宽高一样后 你直接算出来总像素个数然后 开方就得到了360 手动010改一下就好了

easy_rgb

包里放着一份拼图、一份rgb

先把拼图拼出来拿到key

NKCTF2023

解压rgb文件,里面放着三个文件

image-20230330102614399

image-20230330102634286

利用脚本生成hex文件

s1 = open("r.txt", "r").read()
s2 = open("g.txt", "r").read()
s3 = open("b.txt", "r").read()

with open("hex.txt", 'w') as f:
    for i in range(len(s1)):
        f.write(s1[i] + s2[i] + s3[i])

打开zip包,里面放着flag.txt文件,发现文件的最下面放着一句AES-128

image-20230330110037525

在网站在线解密得到flag

image-20230330110045733

easy_word

image-20230330110524505

这里有点错误的地方就是提示只有小写字母,实际上还有大写字母

from hashlib import sha256

char = "1234567890abcdefhijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

for i in char:
    for j in char:
        for x in char:
            for y in char:
                passwd = "h" + i + j + "v" + "O" + x + y + "0"
                if (sha256(passwd.encode()).hexdigest()[0:8] == "b75d1224"):
                    print(passwd)

image-20230330111201540

打开文档没有啥信息

image-20230330111338242

然后关键一步就是要把这个文件的加密给取消了,不然的话就无法后续操作

更改后缀为zip格式,打开里面有一张图片

image-20230330112423512

cloacked-pixel-master隐写

python lsb.py image1.png out.txt Welcome_to_NKCTF

first spam of rabbit year

文件里前面放着spammimic 隐写的内容,解码得到一段佛曰的密文

spammimic - decoded

佛曰:栗楞穆婆悉遮俱吉室嚧无佛吉埵沙他蒙蒙唎皤啰烁伽驮数迦帝楞萨那摩度驮伽度耶萨那曳喝写怛钵遮耶烁埵室摩迦尼菩呼阇栗墀豆哆烁利吉舍阿萨俱夜嚧蒙喝喝诃罚悉阇喝无数那迦陀室沙穆皤南陀娑利烁输夜输参陀数醯诃提耶钵遮夜栗谨伽俱菩度咩烁室醯迦输诃度唎阇钵无羯栗提摩谨咩悉哆阇室悉钵楞那他伽啰伊耶谨那尼那呼伊罚卢输南喝豆娑伽唎醯嚧那嚧羯摩吉参喝那阿地墀数陀楞啰孕罚度醯菩萨埵埵栗他穆菩参舍迦羯沙啰吉尼楞怛尼孕苏地遮苏提曳谨阇那啰阇南曳输曳伊苏伊度啰咩提苏他他娑驮俱婆钵室利烁俱伽写利羯悉阇遮皤佛南悉阿帝萨喝悉阇参参楞罚皤苏喝墀诃他吉伽提利尼埵啰输嚧醯婆伽墀菩唎娑谨他怛写沙伽啰烁摩栗埵伊啰俱楞帝写地卢利怛吉帝陀阿唵伊伽谨曳阇羯娑羯嚧埵唎烁楞喝曳输他阿室钵谨啰楞他呼娑喝菩哆蒙穆诃婆烁他夜孕穆诃钵佛参室悉舍萨穆室遮阿喝啰伽耶喝漫

但是放在佛曰里并不能解码

文件的最后放着一段社会主义核心价值观编码

解码得到一句 rabbit 又 move

然后根据这句提示得到这是佛又曰,而且根据题目密钥就是rabbit

image-20230330185631096

这段密文是零宽字符隐写

Unicode Steganography with Zero-Width Characters (mzy0.com)

image-20230330185954154

看到解密的原文有提示tip:47&13

所以想到了rot13和47加密,把原文拿出来,把tips那部分删掉,ROT47得到

U2FsdGVkX19L5uer0YVyC4BKC9U+2um18/wCVNGFw+yqTON0wdn8FjBXQkCpnLDwaLx727z7FleH

这是段rabbit加密的密文

将刚刚得到的隐藏文字Eno0o01G进行ROT13加密,得到RabBbB1T

然后在网上寻找Rabbit解密的网址

Rabbit在线加密解密 | 在线转换 - Codeeeee 在线工具

这是 Rabbit 加密的密文;将 EnoOoO1G 做 ROT13,得到 RabBbB1T,看起来是 Rabbit 加密的密钥。

image-20230330190807795