gif分离网站
https://tu.sioe.cn/gj/fenjie/
运用脚本,将gif图片分离帧,然后进行重组,获得flag
# 此脚本可以分离图片左右合并gif图片
from PIL import Image
import os
dir_name="./prtemp/res/"
# 创建脚本中需要的文件
def path_create(relative_path):
#获取当前文件所在路径
pwd = os.getcwd()[:]
new_absolute_path = pwd+'/'
relative_path = relative_path[2:]
while len(relative_path) != 0:
new_absolute_path = new_absolute_path + relative_path[:relative_path.find('/')] + '/'
# 检测该文件夹是否已经存在
if not os.path.exists(new_absolute_path):
os.makedirs(new_absolute_path)
relative_path = relative_path[relative_path.find('/')+1:]
# 创建目录
path_create(dir_name)
def get_gif_frame(gif_location):
"""
将gif每一帧抽取出来
:param gif_location: gif的文件路径
:return: PIL图像对象和current指针
"""
im = Image.open(gif_location)
while True:
current = im.tell()
im.save('prtemp/res/' + str(current) + '.png')
# 为什么-1,是放置文件指针便利到最后一个,+1后空对象
if current < im.n_frames - 1:
im.seek(current + 1)
else:
break
return im, current
def image_compose(im, current):
"""
将每一帧图片组合,得到最终的图片
:param im: PIL图像对象
:param current: current指针,为了确定画布的宽度
:return: 得到最终合成图
"""
to_image = Image.new('RGB', (im.size[0] * current, im.size[1])) # 创建一个新图
# 循环遍历,把每张图片按顺序粘贴到对应位置上
flag = 0
for name in img_list:
ph = Image.open('./prtemp/res/' + name)
to_image.paste(ph, (flag, 0))
flag += im.size[0]
return to_image.save('./prtemp/result.png') # 保存新图
# 此处填写图片名称
im, current = get_gif_frame("prtemp/9266eadf353d4ada94ededaeb96d0c50.gif")
# 得到图片的文件序,防止粘贴图片时候拼错
img_list = os.listdir('./prtemp/res')
img_list.sort(key=lambda x: int(x[:-4])) # 得到帧文件的文件顺序
image_compose(im, current)
8deb5f0c2cd84143807b6175f58d6f3f.core
file命令查看文件,为elf文件,本来我以为是linux可执行文件,拖进kali发现无法执行
但是运用root同样没权限,拖入hex发现可疑数据
cvqAeqacLtqazEigwiXobxrCrtuiTzahfFreqc{bnjrKwgk83kgd43j85ePgb_e_rwqr7fvbmHjklo3tews_hmkogooyf0vbnk0ii87Drfgh_n kiwutfb0ghk9ro987k5tfb_hjiouo087ptfcv}
其实刚开始看确实看到了CTF但是没敢确定,因为太长了,所以继续尝试其他的解法,最后还没找到,只能看了下wp,原来是隔4个直接找到就能获取flag
这个python真的是忘没了,写个脚本写了半天
a="acvqAeqacLtqazEigwiXobxrCrtuiTzahfFreqc{bnjrKwgk83kgd43j85ePgb_e_rwqr7fvbmHjklo3tews_hmkogooyf0vbnk0ii87Drfgh_n kiwutfb0ghk9ro987k5tfb_hjiouo087ptfcv}"
b=[]
flag=[]
for i in a:
b.append(i)
for i in range(1,31):
flag.append(b[i*5-1])
print("".join(flag))
2f572adcaa5447feb8cc8c50969cd57d.zip
运用解压后为misc10,运用file函数查看文件类型,发现为text文件
直接起手式,拖入winhex查看,发现一串字符串
666c61677b68656c6c6f5f776f726c647d
刚开始以为是ascii,后来看wp发现全部由0-f组成的十六进制文件,运用十六进制转text获取flag
https://www.toolscat.com/decode/hex
也可以直接base16解码获取flag。
而Base16就是16进制,他的范围是数字(0-9),字母(ABCDEF);
顺便说一句,当ASCll用Base加密达不到所对应的位数的时候用=号补齐;
310085c4315841b1b784b4803ff7e4c1.zip
将文件解压获取到misc100,运用file查看文件类型
可以看到文件为zip格式,所以在win7上直接修改为.zip后缀,进行解压
解压过程需输入密码,此时运用自评破解工具进行破解,获取密码
eb9acff236eb498b9e4d747fb67f86b9.zip
将文件解压缩以后发现为一个未知文件,利用file命令获得为text文件
在winhex中打开发现为各种特殊符号
直接运用记事本打开,发现为一个图案,本来以为是摩斯电码,但是查了下资料发现是BrainFuck,搜索BrainFuck在线解密,获得flag
根据百度搜索的结果可知这是一种叫做BrainFuck的语言,BrainFuck是由Urban Müller在1993年创建的,最小的具有图灵完备性的语言。一共由8种运算符组成,其编译器长度只有两百多个字节。这种语言基于一个简单的机器模型,除了指令,这个机器还包括:一个以字节为单位、被初始化为零的数组、一个指向该数组的指针(初始时指向数组的第一个字节)、以及用于输入输出的两个字节流。
https://ctf.bugku.com/tool/brainfuck
2e5e19744c644912928eddc882f3b0b9.bmp
winhex打开直接获取flag
刚开始我以为是lsb隐写,运用stegslove打开发现不了任何东西,看来以后起手式不能丢啊,先放进winhex里面再说
f9809647382a42e5bfb64d7d447b4099.pcap
以前做题的时候看到流量包首先放到wirshark里面直接分析,现在看到流量包
本题利用binwalk+foremost直接获取flag
获取到pdf后首先ctrl+a全选,然后复制到文本中,获取flag
其实在看文件的时候就可以看到中间有一串文字。
96378111f32f49d09f691870f1268799.rar
01081522291516170310172431-050607132027262728-0102030209162330-02091623020310090910172423-02010814222930-0605041118252627-0203040310172431-0102030108152229151617-04050604111825181920-0108152229303124171003-261912052028211407-04051213192625
打开附件发现为2017年的日历,听过看wp发现两个一组,如下规律
获取到flag
File Format:这里你会看见图片的具体信息有时候有些图片隐写的flag会藏在这里
Data Extract:好多涉及到数据提取的时候
Steregram Solve:立体试图 可以左右控制偏移 可以放张图片试一下就知道这个是什么意思了
Frame Browser:帧浏览器 主要是对GIF之类的动图进行分解,把动图一帧帧的放
Image Combiner:拼图,图片拼接(意思显而易见)
misc
此时运用foremost对文件进行分离,可以完整的将文件分离出来,如下图:
将
00000063.zip解压后可获取如下文件
将两个图片放入stogslove中进行拼接获取到如下图
将拼接的图片调整曲线,获取二维码,扫描获得flag
tips:
本题目中涉及到图片拼接,在hint中有试着找出像素的秘密,从而想到可能是拼接,反正做这种题还是多尝试吧。
f732347c6bad47f1ac715cf67a3f4532.zip
winhex打开后发现文件的类型没问题,GIF89a开头,为gif文件。
在最后发现一串编码,猜测为base64编码,尝试解码后发现解码失败。
U2FsdGVkX19QwGkcgD0fTjZxgijRzQOGbCWALh4sRDec2w6xsY/ux53Vuj/AMZBDJ87qyZL5kAf1fmAH4Oe13Iu435bfRBuZgHpnRjTBn5+xsDHONiR3t0+Oa8yG/tOKJMNUauedvMyN4v4QKiFunw==
看了下wp,其实题目中已经提到了aesop,可以猜测到。发现可能是aes加密,将gif图片进行帧拆分,这里给出在线拆分网站http://ezgif.com/split
https://tu.sioe.cn/gj/fenjie/
获取到图片后运用ps进行拼接可获得如下图案,给出iscc提示,猜测可能有用,在这里有个小tips,打开图片后发现处于索引颜色,此时无法复制图层,可以在图像–》模式中进行调整为RGB颜色,可以正常使用复制图层。
获取到密码以后进行aes解密,两次解密获取flag
aes解密网址https://www.sojson.com/encrypt_aes.html
图片本身为空白图片,但是题目意思为真正的颜色,将图片放入Stegsolve点击左右按钮调整颜色,获取flag
bf87ed29ac5a46d0aa433880dac5e6d8.gz
hex打开,发现是wav文件,猜测可能是zip(看wp了)
修改为zip,然后解压缩获取到sound.wav,此处可以在卡里中运用
foremost -T 文件名
binwalk -e 文件名
分解内容
运用Audacity打开,切换到频谱图,获得flag shift + D
快捷切换频谱图