MISC
miscx
下载文件后,解压得到如下
flag.txt和hint.txt都加密了,解压misc1,得到一张图片
猜测music.doc的密码是2020,得到
音符解密得到
再看前一个压缩包,有个提示rat?可能是rabbit加密解密,密码是2020
得到的字符串再进行6次base64解密,就得到key
hello 2020!就是flag.txt的密码,输入就得到flag
misc30
打开为三个文件
只有第二张图片没有加密,一定是从第二张图片入手,先看一下备注
发现有一串英文字母little stars,猜测是密钥,挨个试了一下,发现是眼见不一定为实的密钥
打开那个文本文档,将下面的空白部分修改一下字体颜色就看到同样一串英文
这个应该是那个flag.png的密钥了,试了一下,成功得到一张二维码,扫一下得到flag
一.萌新赛
1.千字文
首先是一张二维码,但是扫后发现没什么东西,再放入stegsolve中发现了:
是好多张二维码组成的一张位图,然后想到要把它分离开,一个个扫一下,写脚本:
import pyzbar.pyzbar as pyzbar from PIL import Image def fg(): im = Image.open('solved.bmp') num = 0 for i in range(0, 25): for j in range(0, 25): box = (25 * i, 25 * j, 25 * (i + 1), 25 * (j + 1)) im.crop(box).resize((500, 500), Image.ANTIALIAS).save('./qianziwen/%03d.png' % num) num += 1 def dq(): for i in range(624): s = './qianziwen/%03d.png' % i if len(pyzbar.decode(Image.open(s))) > 0: str_image = str(pyzbar.decode(Image.open(s))[0].data.decode()) print(str_image) if 'flag' in str_image: return def main(): fg() print("图片分割已完成") dq() if __name__ == "__main__": main()
然后flag就出来了
我刚开始做的时候,真的是各种问题都来了哈哈哈,不过还好最后问了问学长
要注意在目录中新建一个qianziwen目录,我刚开始弄了个图片;还有,其实没必要先去白边,哈哈哈,因为它的白边和每个小二维码的宽度是一样的
还学习了一个函数crop,截取函数,后面跟四个参数,其实结合这一题就很好理解了
2.萌新福利
在01editor中打开show,bin文件,看不懂
取反运算一下
得到如下:
将文件另存为show.m4a,然后用音乐播放器打开
听出flag是flag{ctfshow萌新福利}
3.qrcode
打开之后是0和1组成的字符串,加上这个题目,想到是二进制转二维码,直接用脚本:
from PIL import Image MAX = 25 pic = Image.new("RGB", (MAX, MAX)) Str = "1111111011100111101111111100000101011101000100000" \ "110111010010010010010111011011101010000110001011101" \ "1011101011101101101011101100000100110110010100000111" \ "111110101010101011111110000000000111001100000000100000" \ "11010010111100110111010010110101100001001101100110100100" \ "11110111111111111110000000000110110111010010111010010110100" \ "10110110110010001001001111111001111111111101100100000000100000" \ "111101111001101100101111110101101111110001000000000111011110001" \ "1010111111101010110010101101110000010001100111000101111011101001" \ "01111011111010010111010000111010001101111011101001010001100001110" \ "10000010000100100100011101111111010110010101011111" i = 0 for y in range(0, MAX): for x in range(0, MAX): if Str[i] == '1': pic.putpixel([x, y], (0, 0, 0)) else: pic.putpixel([x, y], (255, 255, 255)) i = i+1 pic.show() pic.save("flag.png")
然后得到一张二维码:
扫一下就得到flag
4.劝退警告
这题虽然步骤比较多,但是知识点都是基础的,个人感觉质量不错
下载附件https://www.lanzoui.com/i9wocah
得到一个压缩包,解压得到一张gif图片
看不出什么东西,就用binwalk看看
果然里面还有压缩包,这样就分离出来了,得到
打开发现都存在密码
看右边注释,说先做个数独,猜想可能是伪加密,于是拖到01editor中看看
搜索504B01,压缩包头
发现有两个,第一个是伪加密的,然后将09改成00再保存一下就好了
然后就得到一张数独
离谱的是竟然有在线解数独的网站
所以很快就解出来了
密码就是
935714286268953147741826593479538621312649875586172439624395718153487962897261354
解压拿到flag2.zip
然后我觉得就有点意思了,根据里面文件的大小来猜想一下,可能是明文爆破
于是使用右边的提示构造一个说明.txt,然后用winrar压缩成一个压缩包说明.zip
再用Advanced Archive Password Recoverym明文攻击
然后按确定,另存到桌面上,我们就得到一个压缩包flag2_decrypted.zip,直接解压后得到flag.zip
看到右边注释,直接爆破
成功拿到密码,解压得到一张图片
使用Silenteye处理图片
得到flag.txt
03F3开头,为pyc文件,就是python编译后的文件,全选——>复制
打开winhex,选编辑——>剪贴板数据——>粘贴至新文件——>ASCII Hex,然后就得到了
另存为flag.pyc文件,拖到linux中,使用uncompyle把flag.pyc反编译为flag.py,命令如下:
uncompyle6 flag.pyc > ./flag.py
本文来自博客园,作者:Athena-ydy,转载请注明原文链接:https://www.cnblogs.com/Athena-ydy/p/15182214.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效