NKCTF MISC
NKCTF MISC 复现
hard_misc
JYYHOYLZIJQWG27FQWWOJPEX4WH3PZM3T3S2JDPPXSNAUTSLINKEMMRQGIZ6NCER42O2LZF2Q3X3ZAI=
一看等号首先想到base64,不是那就是base32
两者的区别:
- base64中包含大写字母(A-Z),小写字母(a-z),数字0—9以及+/;
- base32中只包含大写字母(A-Z)和数字234567
THMaster
先用dnSpy-net-win32打开,找到THMaster
用16hex打开,修改20000000的十六进制码
然后保存运行出exe,打游戏直接就满足了分数条件,然后保存录像
最后把第一个文件放进010里,搜索关键字,得到flag
三体
打开是一张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)
法二
发现最下面有关键字NKCTF
去除干扰项后发现是
然后搜索反括号},得到另一半
佩服大佬这细致观察的能力
法三
zsteg
zsteg 三体.bmp --all
在这个通道可以看到一部分的flag,分离出来这个通道
zsteg -e "b8,b,lsb,xY" santi.bmp >1.txt
easy_bmp
把width和height图片放进010里面,修改宽高得到图片的信息
然后将密码输入,解压flag.rar文件,得到一张flag.bmp,需要修改宽高
查看数据大小为129600字节
这张图因为被改成了单通道图片,所以不需要/3,直接开方得到宽高均是360
保存得到一张二维码,扫码得到flag
最后记录下出题大佬的预期解
我说一下预期解吧 预期解 第一层的 就是单纯的计算洗像素总个数 然后 根据高度算宽度 和根据宽度算高度 然后如果仔细看 有一张修复的图片右下角有个same 其实想说的是下一层宽高相同 然后最里面那个一层就好做了 你知道宽高一样后 你直接算出来总像素个数然后 开方就得到了360 手动010改一下就好了
easy_rgb
包里放着一份拼图、一份rgb
先把拼图拼出来拿到key
NKCTF2023
解压rgb文件,里面放着三个文件
利用脚本生成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
在网站在线解密得到flag
easy_word
这里有点错误的地方就是提示只有小写字母,实际上还有大写字母
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)
打开文档没有啥信息
然后关键一步就是要把这个文件的加密给取消了,不然的话就无法后续操作
更改后缀为zip格式,打开里面有一张图片
cloacked-pixel-master隐写
python lsb.py image1.png out.txt Welcome_to_NKCTF
first spam of rabbit year
文件里前面放着spammimic 隐写的内容,解码得到一段佛曰的密文
佛曰:栗楞穆婆悉遮俱吉室嚧无佛吉埵沙他蒙蒙唎皤啰烁伽驮数迦帝楞萨那摩度驮伽度耶萨那曳喝写怛钵遮耶烁埵室摩迦尼菩呼阇栗墀豆哆烁利吉舍阿萨俱夜嚧蒙喝喝诃罚悉阇喝无数那迦陀室沙穆皤南陀娑利烁输夜输参陀数醯诃提耶钵遮夜栗谨伽俱菩度咩烁室醯迦输诃度唎阇钵无羯栗提摩谨咩悉哆阇室悉钵楞那他伽啰伊耶谨那尼那呼伊罚卢输南喝豆娑伽唎醯嚧那嚧羯摩吉参喝那阿地墀数陀楞啰孕罚度醯菩萨埵埵栗他穆菩参舍迦羯沙啰吉尼楞怛尼孕苏地遮苏提曳谨阇那啰阇南曳输曳伊苏伊度啰咩提苏他他娑驮俱婆钵室利烁俱伽写利羯悉阇遮皤佛南悉阿帝萨喝悉阇参参楞罚皤苏喝墀诃他吉伽提利尼埵啰输嚧醯婆伽墀菩唎娑谨他怛写沙伽啰烁摩栗埵伊啰俱楞帝写地卢利怛吉帝陀阿唵伊伽谨曳阇羯娑羯嚧埵唎烁楞喝曳输他阿室钵谨啰楞他呼娑喝菩哆蒙穆诃婆烁他夜孕穆诃钵佛参室悉舍萨穆室遮阿喝啰伽耶喝漫
但是放在佛曰里并不能解码
文件的最后放着一段社会主义核心价值观编码
解码得到一句 rabbit 又 move
然后根据这句提示得到这是佛又曰,而且根据题目密钥就是rabbit
这段密文是零宽字符隐写
Unicode Steganography with Zero-Width Characters (mzy0.com)
看到解密的原文有提示tip:47&13
所以想到了rot13和47加密,把原文拿出来,把tips那部分删掉,ROT47得到
U2FsdGVkX19L5uer0YVyC4BKC9U+2um18/wCVNGFw+yqTON0wdn8FjBXQkCpnLDwaLx727z7FleH
这是段rabbit加密的密文
将刚刚得到的隐藏文字Eno0o01G进行ROT13加密,得到RabBbB1T
然后在网上寻找Rabbit解密的网址
Rabbit在线加密解密 | 在线转换 - Codeeeee 在线工具
这是 Rabbit 加密的密文;将 EnoOoO1G 做 ROT13,得到 RabBbB1T,看起来是 Rabbit 加密的密钥。