NKCTF 2023-misc全解(有脚本,有详解)

目录

misc题目附件连接

前言

hard-misc

NKCTF2023问卷调查 

Blue

THMaster

easy_bmp

方法一

方法二

 三体

扫描二维码关注公众号,回复: 14617182 查看本文章

easy_rgb

方法一

 方法二 

easy_word

first spam of rabbit year

密文(记得去掉tip:47&13)

密钥

baby_music

Easymusic

 密码一

密码二

密码三

Easypic

加油各位( •̀ ω •́ )y 期待与君再相逢


misc题目附件连接

链接:https://pan.baidu.com/s/1Lnu3HwyGhU1Ba2EK7W9K_A?pwd=lulu 
提取码:lulu 
--来自百度网盘超级会员V3的分享

前言

前几天打了nkctf ,因为自己也是主打misc,顺便也复现一遍,

一点自己的拙见,各位师傅见笑了

感谢各位读者,对我的支持( •̀ ω •́ )y 有什么问题和建议可以私聊我

hard-misc

得到flag

NKCTF{wtk2023Oo0oImcoM1Ng!23555647}

NKCTF2023问卷调查 

Blue

下载附件 得到如下三个文件

 Vmdk  ovf格式 一看就是虚拟机格式

那我们第一反应肯定使用虚拟机VMaware打开

直接点击ovf文件直接挂载就可以了

挂载成功之后如上图

我会发现有两个登录用户

但是无论点击哪个都需要密码的

这时候这种方法就不可用了 我们要及时止损

经验丰富的人这时候会想到另外两种挂载方式

这里我就不一一展示了 我拿第一个举例DiskGenius

 

挂载之后 我们随便打开一个文件看看 会发现如下图提示

再找找

得到flag

NKCTF{wE1come_to_NKCTF20233}

THMaster

游戏题 不细讲

找东方wiki的修改器

 

thprac.v2.2.1.2.exe

进入练习模式前改分,进入

提示解密了,在replay看到了叫flag的记录

在文件里,用010打开,在文件末

easy_bmp

附件下载

 不用想就知道这个压缩包需要解压密码

 

果然 那后面的两个图片就是解压密码

一个height 一个width

很难不让人先想到一个高度,一个宽度

那就先把height.bmp先拖010里

 

直接改高度

保存得到下图

试了一下发现不行 那肯定是密码的一部分

接下来我们想办法恢复width.bmp的宽

这里如果在010里一个一个去试的话不好试

这里我们提供两种解法

方法一

宽要根据bmp性质算一下,因为是32位深,所以1589466/4/283=1404

所以图片的宽为1404 直接拖进010里改就行

方法二

我们直接上脚本(#爆破bmp的宽)

import struct
import zlib
f = open('misc31.bmp','rb')
c = f.read()
width = c[18:22]
height = c[22:26]
for i in range(900,1500):
    f1 = open('bpout'+str(i)+'.bmp','wb')
    img = c[:18]+struct.pack('>i',i)[::-1]+c[22:]
    f1.write(img)
    f1.close()

 最后无论那种方法都可以得到

总和得到密码

BMP_Height_width_easy

解压得到图片  还是一个bmp格式的

八成还是改长宽高

最简单的方法就是拖010里 自己调试

当然长宽均被设置为 1 的 bmp 图片,由于颜色通道是灰度而不是 RGB,数据大小为 129600 Bytes,于是将图片长宽均设置为 360 并保存

保存得到二维码

得到flag

NKCTF{eab1291e-9e37-4ff1-b76d-f1af63eaad43}

 三体

挺简单的题,不要想复杂

下载附件只有一张图片 图片挺大呀 看的我眼花

那就正常思路先走一下

010进一下 看一下格式

Stegsolve再进一下 看看有什么信息

但很遗憾没有什么特别的

那下一步怎么办

进kali 使用zsteg 一把梭

zsteg  三体.bmp -a  

这一看就知道了吧 明显是flag反过来了

先到出来

zsteg  -E 'b8,b,lsb,xY' 三体.bmp >1.txt

就直接使用string查看字符串 关键字

 

综合得到flag

NKCTF{3d77dc1a37b2d1ebf489c973f554ea10}

easy_rgb

下载附件 里面有连个压缩包

 

 Rgb需要密码 所以我们只能从key下手

打开key发现一堆散乱的图片碎片

那不用想 拼图

方法一

如果有Montage+gaps的环境

Montage+gaps拼图得到key

 montage *.png -tile 30x6 -geometry +0+0  flag_tmp.pnggaps --image flag_tmp.png  --size 125 --save#

说明一下参数

30x6和125#-tile:设置每行每列的原始图片数量,

30x6 表示拼图的宽30张 高6张,这个要结合gaps多尝试几种不同组合才能得到正确的尺寸。#--size: 这里每张图片为125像素

 

 方法二 

如果没Montage+gaps的环境也可以

我们仔细观察会发现只有几个图片里有 字符的

 我们就把他们单独挑出来 也不多

 最后在PS拼起来就可以了

得到密码

NKCTF2023

那我们继续

解压rgb.zip

里面有三个txt文件

rgb呀很熟悉呀  放一起看看

我们仔细观察

会发现他是把一个文件的RGB三个数值单独提取出来

所以我们要再把他们 合在一起

在010里创建个十六进制文本

我们按rgb的顺序一位一位的依次粘贴到010里

要么我们就使用脚本

# 读取字节
file1 = open("r.txt", "rb")
file2 = open("g.txt", "rb")
file3 = open("b.txt", "rb")

# 写入字节
p = open("decode.txt", "wb")

data = []

# 循环1669次,每次依文件顺序读取
for a in range(149):
    # 设定每次往后读取一个字节
    i = file1.read(1)
    data.append(i)

    i = file2.read(1)
    data.append(i)

    i = file3.read(1)
    data.append(i)

for i in data:
    p.write(i)

 得到原格式

然后复制

再010里粘贴自十六进制

保存为zip文件

得到一个flag.txt文件

 

压缩包末尾提示 AES-128

这是AES加密 加上之前得到的密钥

在线网站

AES在线加密解密工具 - MKLab在线工具AES在线工具,AES加密解密,AES在线解密,ECB,CBC,CTR,CFB,OFB模式,Pkcs7,Pkcs5,NoPadding,ZeroPadding填充,CryptoJS加解密,Cipher加解密https://www.mklab.cn/utils/aes

得到flag

NKCTF{603fcdfc-652b-40e4-90cf-f27c2edc2d9f}

easy_word

 压缩包里有文档 但文档加密

但有提示
小明这个笨蛋,给文档设置了一个密码,但是他自己却忘记了密码,他知道以下信息:

1.
密码是数学和小写英语的随机生成的

2.
hash函数:
输出大小 256 bits 内部大小 256 区块大小        512 长度大小 64 字符尺寸 32

3.
密码:h??vO??0 (?号部分为小明已经忘记的位置)
哈希:b75d1224 ... (后面不记得了...)

上脚本

import string
import hashlib
s = 'b75d1224'
chars = string.ascii_letters + string.digits  # 构造字符集
print (chars)
for i in chars:
    for j in chars:
        for k in chars:
            for n in chars:
                psw =  'h' + i + j + 'vO' + k + n + '0'
                sha256 = hashlib.sha256(psw.encode(encoding='utf-8')).hexdigest()
                if s ==sha256[0:8]:
                    print(psw)

得到 密码

h4evOF90

打开文档之后呀

假flag

 这样我们先关掉加密

 拖到010里查看格式

惊奇的发现是压缩包的格式

二话不说直接改后缀

 在里面找到了一个png的图片

KEY:Welcome_to_NKCTF

得到一个密钥

看来肯定是什么隐写

并且用 StegSolve 发现有 LSB 隐藏信息的痕迹

经过多次尝试 发现是cloacked-pixel

工具开源地址

GitHub - livz/cloacked-pixel: LSB steganography and detectionLSB steganography and detection. Contribute to livz/cloacked-pixel development by creating an account on GitHub.https://github.com/livz/cloacked-pixel

Python2 lsb.py extract image1.png out Welcome_to_NKCTF

运行得到flag

NKCTF {dc0684dd-5a57-4d47-b9c0-debed0ef28b9}

first spam of rabbit year

 里面只有一个txt文件   (做完之后才发现这个题才是套娃)

文本最后是 社会主义核心价值观编码

那就想从你下手

 rabbit 又 move

这看样子是个提示呀

接下来只能看看上面的字符了

根据题目提示想到了可能是垃圾邮件解密

在线网址

spammimic - decodespammimic - decodehttps://www.spammimic.com/decode.shtmlspammimic - decode

 

得到

与佛论禅

在线网站

https://tools.takuron.top/talk-with-buddha/   密码rabbit(上一个解码得出来的)

 &​​​​‍‎‏auD5​​​​‏‍​v'<)​​​​‏‍‌`h​​​​‎​‏{dF6C_*'Jrcqzrh&ZaF>`g^​​​​‏‍‌Hr'}vuHZJB​​​​‎​‏%~}_H5?gu​​​​‌‏‏;q​​​​‍‏‌)"<rA?{sH2{IfafKfu=6w_tip:47&13

这一看就是0宽字符

在线网址

Unicode Steganography with Zero-Width Charactershttps://www.mzy0.com/ctftools/zerowidth1

解密得到key:EnoOoO1G

结合结尾的tip:47&13 应该是rot编码

密文是rot47处理,密钥是rot13处理,

rabbit即可

密文(记得去掉tip:47&13)

 U2FsdGVkX19L5uer0YVyC4BKC9U+2um18/wCVNGFw+yqTON0wdn8FjBXQkCpnLDwaLx727z7FleH0

密钥

RabBbB1T

最后使用rabbit解密

得到flag

NKCTF{H4Ppy_tH3_Y34r_0f_R4BbBbbbB1tTtTtT}

baby_music

 

里面只要音频

先拖进010里看一下格式

仔细观察会发现

2710和2711 出现这么多次

明显有明显规律

27作为分割,10 11出现

怀疑二进制,11是1 10是0

这就需要我们处理一下

上脚本

def bytes2hex(bytes):
    num = len(bytes)
    hexstr = u""
    for i in range(num):
        t = u"%x" % bytes[i]
        if len(t) % 2:
            hexstr += u""
        hexstr += t
    return hexstr.upper()


# 读取字节
file1 = open("flag.wav", "rb")

# 写入字节
p = open("flag1.txt", "wb")

data = []

for a in range(20000000):
    # 设定每次往后读取一个字节
    i = file1.read(2)
    i = bytes2hex(i)
    if i == '1027':
        data.append(b'0')
    elif i == '1127':
        data.append(b'1')
    elif i == '':
        break

for i in data:
    p.write(i)

运行

 

运行得到

二进制文本

在010里创建一个十六进制文本,复制刚刚运行得到的,粘贴自二进制

这一看就是一个压缩包的格式

保存加后缀zip

打开一看 还需要密码  但有提示

刚开始还以为还是二进制

后来感觉不像 尝试之后

 

发现是摩斯密码

0是.

1是-

保存到文本里

使用脚本转换一下

def read_file(filepath):
    with open(filepath) as fp:
        content=fp.read();
    return content

result = read_file('lu1.txt')

result = result.replace(r'0','.')
result = result.replace(r'1','-')

with open('lu2.txt', 'w') as f:
    f.write(result)

 最后再加上分隔符 / (手敲就可以了)

 解码

 WELCOMETONKCTF,THEPASSWORDIS16BYTESRANDOMLYGENERATED,ISTHEREABETTERWAYTOUNLOCKTHEZIP?

又是作者的一个小套路

但也是个提示

告诉我们是16位字符

因此肯定没法爆破(除非超强计算机才能在短时间破解)

但是在010里查看时发现zip里面是png,且算法符合明文攻击的前提,因此用bkcrack爆破密钥,得到flag.png:

先创一个png文件头的文件

构造明文头 16字节就可以了

bkcrack.exe -C 1.zip -c flag.png  -p flag.out

当然不构造文件头也可以 还快捷

就直接使用这个命令

bkcrack.exe -C 1.zip -c flag.png  -x 0 89504E470D0A1A0A0000000D49484452

 得到密钥

Keys: 846ad344 02327731 173ff347

然后爆破

bkcrack.exe -C 1.zip -c flag.png -k 846ad344 02327731 173ff347 -d flag1.png

得到图片 

就是flag

NKCTF{You_are_very_smart!!}

Easymusic

 也是只有个音频

根据提示需要找到三个密码

 密码一

拖AU里

在音频最前端发现有规律的波形

根据规律就是二进制解密

高波位时1 低波位是0

01110000 01110011 01100100 01000001 00111010 00111000 00110011 00111001 00110111 00111001 00110011 00110110 00110111

因为说过密码是八位数

所以很容易想到ASCLL码

得到

psdA:83979367

密码二

还是在AU里

打开频谱图

 拖动滑轮

得到

PsdB:74208645

密码三

音频解码都试过了

那就先看看源文件格式

得到

psdC:01374890

拿到三个密码

接下就是解密

这里使用openpuff

打开openpuff  点击unhide

 输入三个密码 按顺序

 

 

 弹出之后

解密成功

打开保存目录

得到

NKCTF{52d446a51c6896af878f872e0d748118}

Easypic

 只有一张图片

 打开属性

39MB的大小

里面肯定有东西

直接分离

(之前我还使用kali分离结果什么都没有)

先脱进010里

会发现后面一大半都是另外的

所以提出来 保存

根据提示

我们使用veracrypt进行破译

保存1,

挂载1密钥文件为NBLOGO.png

 按照上面步骤挂载

 

弹出这个说明加载成功了

返回我的电脑 就会看见多出个磁盘

 打开 里面只有一张图片

原本准备进一步分析这张图片却发现   图片里隐隐约约可以看到一些东西

我果断打开ps

但怎么改才清晰呢

我又打开了010

在尾部发现了提示

566*566

打开ps 打开画布大小

 

 

得到flag

NKCTF{49ce8740502743585C4a44404e62d8f9}

加油各位( •̀ ω •́ )y 期待与君再相逢

猜你喜欢

转载自blog.csdn.net/m0_68012373/article/details/129839415
今日推荐