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





浙公网安备 33010602011771号