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
成功拿到flag.py文件
这时根据题目提示
将check[0]改成check[1],但是要把最后一行的__builtin__改成builtins不然会报错
运行一下,得到flag
 
posted @   Athena-ydy  阅读(185)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示