目录
misc题目附件连接
前言
hard-misc
NKCTF2023问卷调查
Blue
THMaster
easy_bmp
方法一
方法二
三体
easy_rgb
方法一
方法二
easy_word
first spam of rabbit year
密文(记得去掉tip:47&13)
密钥
baby_music
Easymusic
密码一
密码二
密码三
Easypic
加油各位( •̀ ω •́ )y 期待与君再相逢
链接:https://pan.baidu.com/s/1Lnu3HwyGhU1Ba2EK7W9K_A?pwd=lulu
提取码:lulu
--来自百度网盘超级会员V3的分享
前几天打了nkctf ,因为自己也是主打misc,顺便也复现一遍,
一点自己的拙见,各位师傅见笑了
感谢各位读者,对我的支持( •̀ ω •́ )y 有什么问题和建议可以私聊我
得到flag
NKCTF{wtk2023Oo0oImcoM1Ng!23555647}
Vmdk ovf格式 一看就是虚拟机格式
那我们第一反应肯定使用虚拟机VMaware打开
直接点击ovf文件直接挂载就可以了
挂载成功之后如上图
我会发现有两个登录用户
但是无论点击哪个都需要密码的
这时候这种方法就不可用了 我们要及时止损
经验丰富的人这时候会想到另外两种挂载方式
这里我就不一一展示了 我拿第一个举例DiskGenius
挂载之后 我们随便打开一个文件看看 会发现如下图提示
再找找
得到flag
NKCTF{wE1come_to_NKCTF20233}
游戏题 不细讲
找东方wiki的修改器
thprac.v2.2.1.2.exe
进入练习模式前改分,进入
提示解密了,在replay看到了叫flag的记录
在文件里,用010打开,在文件末
附件下载
不用想就知道这个压缩包需要解压密码
果然 那后面的两个图片就是解压密码
一个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}
下载附件 里面有连个压缩包
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的环境也可以
我们仔细观察会发现只有几个图片里有 字符的
我们就把他们单独挑出来 也不多
得到密码
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}
压缩包里有文档 但文档加密
但有提示
小明这个笨蛋,给文档设置了一个密码,但是他自己却忘记了密码,他知道以下信息:
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
这样我们先关掉加密
惊奇的发现是压缩包的格式
二话不说直接改后缀
在里面找到了一个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}
里面只有一个txt文件 (做完之后才发现这个题才是套娃)
文本最后是 社会主义核心价值观编码
那就想从你下手
rabbit 又 move
这看样子是个提示呀
接下来只能看看上面的字符了
根据题目提示想到了可能是垃圾邮件解密
在线网址
spammimic - decodespammimic - decodehttps://www.spammimic.com/decode.shtmlspammimic - decode
得到
与佛论禅
在线网站
https://tools.takuron.top/talk-with-buddha/ 密码rabbit(上一个解码得出来的)
&auD5v'<)`h{dF6C_*'Jrcqzrh&ZaF>`g^Hr'}vuHZJB%~}_H5?gu;q)"
这一看就是0宽字符
在线网址
Unicode Steganography with Zero-Width Charactershttps://www.mzy0.com/ctftools/zerowidth1
解密得到key:EnoOoO1G
结合结尾的tip:47&13 应该是rot编码
密文是rot47处理,密钥是rot13处理,
解rabbit即可
U2FsdGVkX19L5uer0YVyC4BKC9U+2um18/wCVNGFw+yqTON0wdn8FjBXQkCpnLDwaLx727z7FleH0
RabBbB1T
最后使用rabbit解密
得到flag
NKCTF{H4Ppy_tH3_Y34r_0f_R4BbBbbbB1tTtTtT}
里面只要音频
先拖进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!!}
也是只有个音频
根据提示需要找到三个密码
拖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}
只有一张图片
打开属性
39MB的大小
里面肯定有东西
直接分离
(之前我还使用kali分离结果什么都没有)
先脱进010里
会发现后面一大半都是另外的
所以提出来 保存
根据提示
我们使用veracrypt进行破译
保存1,
挂载1,密钥文件为NBLOGO.png
按照上面步骤挂载
弹出这个说明加载成功了
返回我的电脑 就会看见多出个磁盘
打开 里面只有一张图片
原本准备进一步分析这张图片却发现 图片里隐隐约约可以看到一些东西
我果断打开ps
但怎么改才清晰呢
我又打开了010
在尾部发现了提示
566*566
打开ps 打开画布大小
得到flag
NKCTF{49ce8740502743585C4a44404e62d8f9}