ctfshow
misc50
解压附件,发现是一张图片
直接zsteg一把梭
发现藏了个zip文件和一段base编码
foremost分离一下
打开zip文件,发现最里面一层有加密
下面应该是解压密码
丢到cyberchef,得到密码
解压后发现是一串很长的字符串,并且3078一直在重复
3078对应的16进制刚好为0x
直接文本转十六进制,发现思路正确
使用脚本,去掉0x
import re
def read_file(filepath):
with open(filepath) as fp:
content=fp.read();
return content
number = read_file('thienc.txt')
result = []
result.append(re.findall(r'.{2}', number))
result = result[0]
strings =''
for i in result:
y = bytearray.fromhex(i)
z = str(y)
z= re.findall("b'(.*?)'",z)[0]
strings += z
b= strings.split('0x')
strings=''
for i in b:
if len(i) ==1:
i= '0' + i
strings +=i
with open('result.txt', 'w') as f:
f.write(strings)
print("complete!")
运行脚本
得到十六进制文本
打开010,导入十六进制文本
发现是7z压缩包文件头,修改后缀
打开发现还要密码
想起一把梭的时候还有个可疑字符串
猜测是密码
丢到cyberchef,先base64,再base32
解压完
发现最后有"=="
一次解密中后还有“=”
考虑是多次base64+base32循环加密
借用脚本
import base64
import re
f = open('secenc.txt').read().encode('utf-8')
while True:
if re.match('^[2-7A-Z=]+$', f.decode('utf-8')):
f = base64.b32decode(f)
elif re.match('^[0-9a-zA-Z+/=]+$', f.decode('utf-8')):
f = base64.b64decode(f)
else:
print(f.decode('utf-8'))
break
with open('result.txt', 'w', encoding='utf-8') as file:
file.write(str(f,encoding='utf-8'))
print("Decryption complete!")
运行脚本
发现是ook编码
在线解密网站
解完发现是brainfuck编码
继续解码,得到flag
misc30
下载附件,发现是没有后缀的
010打开,一眼rar压缩包文件头
修改后缀,发现有两个是加密的,且不是伪加密
先解压星空.jpg
发现在属性的地方有提示密码
成功解压word文档
发现有不可见字符
直接复制到txt文本里
得到另一张图片密码
解压,发现是一张二维码
丢到QR里解析,得到flag
stega1
解压附件,发现是jpg图片
010打开没有得到线索,stegsolve也没看出来是lsb隐写
这里是jphs隐写
用jphs打开
再点击seek,空密码直接ok
保存下来打开,得到flag
misc40
下载附件,发现zip里面只有一个是加密的
先看其他三个
打开txt文档,发现提示进制转换
可以直接二进制转十进制,得到一个密码
解压那个加密,发现不是
继续看其他文件
用QR解析二维码,发现不在
010打开,拖到最下面,一眼brainfuck编码
在线解码
继续社会主义核心价值观解码
得到密码,发现还解压不了
还有一个mp3文件没看
用MP3Stego看下,把文件拖到同一文件夹下,右键终端
命令
./Decode.exe -X -P 123456 svega.mp3
得到线索
得到密码且提示用Silenteye
将解压完的wav文件用Silenteye打开
回想到最开始得到的密码
得到flag
misc30
下载附件,发现是伪加密,修改一下
得到mp3文件,Audacity打开看频谱图,没啥东西
拖到kali里binwalk一下,发现mp3文件藏了一张图片
foremost分离一下
得到图片,很明显下面藏了什么东西
修改一下高度
一眼看出是猪圈密码
在线解码网站
得到flag
红包题第一弹
解压zip,发现有好多个zip在里面
先解压第一个,发现是张图片
010打开,发现最下面有字符串
解码完,提示png(蒙蒙的)
继续看其他照片,发现最后100个字节都有base64编码过的字符串
猜测是把全部图片的base64编码过后的字符串粘在一起
然后转成png图片
脚本提取下全部字符串
import zipfile
path1 = './'
path2 = './'
res = ''
for i in range(1, 87): #遍历每个zip文件
zip = zipfile.ZipFile(path1 + str(i) + '.zip')
jpg = str(i) + '.jpg'
zip.extract(jpg, path2) #将zip中的文件解压到指定路径
zip.close()
f = open(path2 + jpg, 'rb').read()
res += f[len(f)-100:len(f)+1].decode('utf-8') #len(f)-100表示从倒数第100个字节开始截取数据,并且解码为utf-8编码的字符串
print(res)
运行脚本
将字符串复制到在线解码网站
base64转图片
得到一张二维码
QR解析一下得到flag
stega10
下载附件,得到一张图片
010打开发现可疑字符串
丢到cyberchef,得到一个网站
访问下载附件,发现是加密的
不是伪加密
看了看文件大小,都为1k,猜测CRC爆破
脚本
import zipfile
import string
import binascii
crc = []
zip = zipfile.ZipFile('./flag.zip', 'r')
for i in zip.namelist():
crc += [zip.getinfo(i).CRC]
crc = crc[1:10]
for i in range(9):
for j in string.printable:
c = binascii.crc32(j.encode('utf-8'))
if c == crc[i]:
print(j, end = '')
得到密码
解压那个压缩包
得到一张图片,但是打不开
010看一下,拖到最下面发现逆序了
直接上脚本
f = open('./n.png', 'rb').read()
res = open('./n2.png', 'wb')
res.write(f[::-1])
得到一张二维码
QR解析一下得到flag
stega11
解压完得到一张图片
010打开大概找了一下没找到
打开kali,strings一下
命令
strings flag.jpg
找到可疑字符串
直接base32解码
得到flag