2022第六届强网杯青少赛 Misc&Crypto-WriteUp

WriteUp 1年前 (2022) admin
790 0 0

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

前言

前天参加了强网的青少赛,有幸拿到了线下名额,现在对misc和crypto的题目进行巩固复盘下,有一说一今年的题目还是挺友好的。

另外个人觉得misc出的有点水了 两道题目有同样的考点 质量不是很好。

比较可惜的就是没拿到前三血,misc都是比较靠前做出来。

题目附件:

  • misc1:https://share.weiyun.com/wxckLdqd

  • misc3:https://share.weiyun.com/CaRkgF5v

  • crypto1:https://share.weiyun.com/UnB1MJxI

  • crypto2:https://share.weiyun.com/YMmjelND

题解

Misc1

下载附件得到chuyinweilai.png winhex分析

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

发现里面的数据是base64,用脚本解密下写到新的文件

import base64f = open('chuyinweilai.png','r')content = base64.b64decode(f.read())with open('new.png','wb') as f:f.write(content)

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

输出后的图片仍然不显示

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

用winhex分析发现奇数位的字节和偶数位的字节相反了,起初我以为只是出题人对图片的头和尾进行了修改,当我修改头和尾后发现仍然不显示,那么就说明每一个字节都是相反的。

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

使用脚本修改

import base64import binasciif = open('chuyinweilai.png','r')content = base64.b64decode(f.read())r = ""for i in range(0,len(content),2): #分奇偶写入文件    r += str(hex(content[i+1]))[2:].zfill(2) #这里zfill(2)很重要 一定要填充0 否则结果大相径庭    r += str(hex(content[i]))[2:].zfill(2)content = binascii.unhexlify(r)with open('new.png','wb') as f:f.write(content)

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

运行脚本,输出的图片成功显示:

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

图片提示音乐的财富密码,我们百度一下发现是数字4536251

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

这一猜就知道是某种加密的图片隐写,但还不知道是哪种所以刚开始一直试都错了导致做题的进度变慢了,后面我stegsolve分析了一下发现lsb头部有数据,同时又存在加密,根据经验就知道是cloack-pixel加密。

使用payload得到flag

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

做这种题目还得是多做才能提高速度,有经验就能做快很多。

flag{5cc0aa21208b517dbd0bde650247237f}

Misc3

下载附件得到png图片,winhex分析 直接拖到尾部发现PK头和一个密码7his_1s_p4s5w0rd

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

改后缀为.zip 发现文件没有密码 给的是一张png图片,那么说明这个密码同样和第一题一样是图片隐写的密码

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

再次cloack-pixel尝试 结果一下就出了flag(吐槽下出题人真的很爱用cloack-pixel 同时也是我为什么说题目质量不好的原因)

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

flag{2e55f884-ef01-4654-87b1-cc3111800085}

Crypto1

题目给了一个txt文件 里面是许多的A和B

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

刚开始猜测是培根密码,但结果不是,后来想到A和B如同0和1 还有摩斯密码
尝试摩斯密码,用脚本将A和B替换为.和-

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

Cyberchef解密一下:

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

这个明文看上去像是一个被打乱的明文,以某种规律打乱的替换密码 尝试使用https://quipqiup.com/ 网站进行分析(很多看不懂的密文尝试丢里面会有惊喜)

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

得到了flag,但这里还不对 这里是一个坑点,当时尝试了很久。同时注意这里的flag的字母要变成小写。

因为摩斯电码存在两种情况,也可以是前者为-后者为. 所以正确解法是A和B替换相反一下,反过来再试就得到了flag

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

flag{1d817f23-4e20-9405-bf6d-e83d055316d6}

Crypto2

下载附件得到密文FvLFArGp[ovpxBpsssD]qCElwwoClsoColwpuvlqFv

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

这个密文刚开始第一眼可以隔一位看有F L A G [ xxxxxxxxx] xxxxxx 有点像栅栏密码所以就去在线网站尝试

网站尝试一番过后 当栅栏数为32时最终结果格式为flag{} 得到栅栏数为32

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

题目提示说最终结果为flag{uuid}

所以先把这段字符串转换为小写 这里直接异或32位就都转换成对应的大小写,同时[变为{

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

Flag很接近了,我们再去了解一下uuid uuid一般为8-4-4-16 共36位长,且有-

所以这里我们只要把每8位后一位的字母”L” 的ascii(76) 减去 符号”-“的ascii(45)就是每个字符串需要减去的差值

Ord(‘L’) – ord(‘-‘) = 31

开写脚本,讲密文的每一位ascii都减去31 再转换结果

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

这里我当时以为就是flag了,卡了很久,这里也是一个坑 个人觉得有点不妥的地方

因为uuid都是16进制,那么哪里来的大写的G呢?

所以当时猜测了一下,G与F仅差1位,即ascii -32就是F(原来的是ascii -31),同时看原密文f对应G,有没有可能是小写字母要减去32位 而大写字母只用减去31位呢

写脚本验证(最终脚本):

cryher = "FLAG[vxpsDqCElwwoClsoColwpuvlqFvvFrpopBss]"res = ""for i in cryher:    res += chr(ord(i)^32)
content = "VXPSdQceLWWOcLSOcOLWPUVLQfVVfRPOPbSS"res = "flag{"for i in content: if i.isupper(): #大写 -31 res += chr(ord(i)-31) else: #小写 -32 res += chr(ord(i)-32)res += "}"print(res.lower())

2022第六届强网杯青少赛 Misc&Crypto-WriteUp

这个flag看起来有点样子了,都是符合要求的16进制 事实上就是最终的flag。

需要注意的是最终flag值要为小写

flag{7914d2ce-880c-40c0-8167-2f77f3101b44}


2022第六届强网杯青少赛 Misc&Crypto-WriteUp

2022第六届强网杯青少赛 Misc&Crypto-WriteUp


免责声明

由于传播、利用本公众号NGC660安全实验室所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号NGC600安全实验室及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!



原文始发于微信公众号(NGC660安全实验室):2022第六届强网杯青少赛 Misc&Crypto-WriteUp

版权声明:admin 发表于 2022年11月4日 下午8:00。
转载请注明:2022第六届强网杯青少赛 Misc&Crypto-WriteUp | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...