ctfshow菜狗杯复现
1.杂项签到
1.得到一张png,扔到kali里,pngcheck一下,CRC报错
2.尝试改一下宽高,但没有什么用,直接用010搜一下试试,得到flag
2.损坏的压缩包
1.打不开,显示损坏,010看一下发现应该是png文件,直接改后缀位.png,得到flag
3.谜之栅栏
1.根据名字猜了好久,还以为是颜色对比,但这题就真的只是文件源码比较,010打开,会发现两个文件各有一串L开头的有序字符串。
2.L都不要,栅栏解密,得到flag
4.你会数数吗
1.得到无类型文件,010打开一下,就是txt
![image](https://img20
2.根据名字猜测就是字频统计,使用脚本
点击查看代码
# -*- coding:utf-8 -*-
# Author: MoChu7
alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*()\_+-/={}[] "#所有正常打印字符
strings = open('./1.txt').read()#读取需要统计频数的文本
result = {}
for i in alphabet:
counts = strings.count(i)
i = '{0}'.format(i)
result[i] = counts
res = sorted(result.items(), key=lambda item: item[1], reverse=True)
num = 0
for data in res:
num += 1
print('频数第{0}: {1}'.format(num, data))
print('\n---------------以下是频数从多到少的字符,按照从前到后排序---------------')
for i in res:
flag = str(i[0])
print(flag[0], end="")
3.得到flag
ctfshow{a1b2d3e4g56i7j8k9l0}
5.你会异或吗
1.文件源码明显是乱码,根据题目提示,猜测要全文件异或的数据就是0x50,使用010打开文件源码
2.全选,使用010中的工具-二进制运算-异或,得到正常的图片源码
3.保存,png上就是flag
6.flag一分为二
1.得到一张png,扔进kali,pngcheck跑一下,显示CRC错误
2.010打开,改一下高度,得到flag的一半
3.使用WaterMarkH提取水印,得到另一半flag
4.拼起来就是完整的flag
ctfshow{FirstP@RTSecondP@rTMikumiku~}
7.You and me
1.跟名字,猜测是盲水印,使用盲水印的脚本,下载网址:https://github.com/chishaxie/BlindWaterMark
python bwmforpy3.py decode 1.png 2.png 3.png
2.得到的就是flag
8.我吐了你随意
1.题目提示,应该就是零宽度隐写,拖进kali,用vim看一下类型,使用解码网站
2.得到flag
9.这是个什么文件?
1.打开后发现是加密的,伪加密,改09为00,得到2
2.看到了decode和py等关键词,猜测是pyc文件,在线反编译生成py文件一下,工具网址:https://tool.lu/pyc/
3.得到Py文件,直接运行
4.得到flag
ctfshow{cdjnjd_565f_GCDH_kcrim}
10.抽象画
1.得到一个txt,猜测是base,可以使用一下basecrack,安装参考:https://www.freebuf.com/sectool/244559.html
2.使用命令
python basecrack.py -f 1.txt
根据揭秘结果可以看出是加密套娃,多解几次,最后得到的十六进制,可以看出是png的源码
3.使用010建立新的文件,源码为刚才的解密结果
4.得到看起来不是很正常的png,使用npiet(也是第一次见这个工具),下载安装地址:https://www.bertnase.de/npiet/
5.得到flag
ctfshow{dec8de_frejnv_frejer89}
11.迅疾响应
1.直接用QR扫,扫不出来东西,用在线网站试一下,使用这个网站:https://merricx.github.io/qrazybox/
2.使用tools里面的解码
3.得到flag的前一半
ctfshow{11451419-1981-
4.将二维码的左侧纠错区涂白,扫描后得到完整的flag
ctfshow{11451419-1981-landexiangle}
12.我可没有骗你
1.得到的zip是加密的,没有找到密码提示,直接用AR爆破一下,是八位数字密码
2.得到的是mp3文件,audacity打开,频谱图没有什么特别的,猜测使用silenteye,直接扔进去软件闪退,是文件的问题,010看一下文件头
3.所以文件应该是wav而不是mp3,改后缀,扔到silenteye中,sound qualit调到high,得到flag
13.你被骗了
1.得到一个mp3,010打开,开头的副标题是假的flag
2.使用mp3stego试一下,密码就是你被骗了的拼音(猜了密码很久)
3.在得到的txt中就有flag
ctfshow{chdv_1dcs_cjksnjn_NJDSjdcdjn}
14.一层一层一层地剥开我的♥
1.用bandzip打开会显示损坏,用winrar打开,发现应该是word文件,改后缀为docx
2.文档中是一串看不懂的字符,尝试一下转换字体,得到了正常的句子
3.没看懂有什么用,010打开看一下zip,发现有另外一个rar
4.手撕出来,发现是加密的,猜测密码跟文档上的歌词有关
5.猜测密码是这句歌词的数字简谱(因为原歌词不对)
11556654433221
6.得到两个文件,010打开名为♥的文件,010报错提示为压缩包文件,仔细对比一下发现是rar文件
7.加上52 61 72 21,改后缀为rar,打开发现是加密的,那密码就和jpg有关
8.010打开jpg,发现文件末尾有另外一张jpg,手撕出来
9.密码就是jpg上的文字
10.打开txt,得到颜文字,在线解码,得到flag
15.打不开的图片
1.根据最近做的题目,猜测就是png源文件数据逐个字节进行了某种运算,那就直接对照一下89 50 4E 47,发现是每个字节和正常png的字节的和为0x100,例如0x77 + 0x89 = 0x100;0xB0 + 0x50 = 0x100,所以此题的题解就是0x100减去逐个字节(但这里需要注意,如果读取到的字节为0x00,那么就不要使用0x100减了)
2.脚本如下:
点击查看代码
f1 = open("./1.png","rb")
f2 = open("./2.png","wb")
all_data = f1.read()
lt = []
for i in all_data:
if i == 0:
lt.append(i)
else:
lt.append(0x100 - i)
f2.write(bytes(lt))
f1.close()
f2.close()