1068 字
3 分钟
BYU CTF的WriteUp
Misc
1.Inception
题目描述
I found this weird file on my computer. I tried opening it, but there were some problems.解题思路
1⃣首先对附件进行检查
附件为png图片,所以复制附件并添上后缀,得到第一部分的flag
byuctf{wh4t_2⃣同时用binwalk检查并提取隐藏内容
提取出来的有:
4F3 4F3.zlib29 29.zlib337.zip data.bin分别读取各附件得到flag
从data.bin得到flag的第二部分 th3从4F3中得到第三部分 _fr3ak}最终flag为
byuctf{wh4t_th3_fr3ak}2.Easy
题目描述
Okay, easy mode is turned on. You know how to use bash, right?
chals.cyberjousting.com:1370解题思路
1⃣首先使用nc连接题目服务
输入pwd测试当前目录
根据返回结果得知当前工作目录在/app
2⃣发现过滤规则
尝试查看当前目录文件,但根据返回的报错可以看出:题目服务会删除命令中的空格
3⃣绕过空格过滤
用${IFS}代替空格使用
但还是会报错:说明不能直接使用普通外部命令
4⃣使用 bash 内置功能列目录

3.Chromatic
题目描述
(一份mp4文件)解题思路
先检查mp4文件
根据
30 fps54 秒可以看出是一秒一张图片,同时看视频内容可以猜测:每一秒的红色数值,正好能转成一个字符。
EXP
import subprocessimport collections
video = "chromatic.mp4"
# 取视频左上角 1x1 像素,每帧输出 RGBcmd = [ "ffmpeg", "-v", "error", "-i", video, "-vf", "crop=1:1:0:0,format=rgb24", "-f", "rawvideo", "-"]
data = subprocess.check_output(cmd)
# 每帧 3 个字节:R G Br_values = [data[i] for i in range(0, len(data), 3)]
fps = 30flag = ""
# 每 30 帧,也就是每 1 秒取一次for i in range(0, len(r_values), fps): block = r_values[i:i+fps]
# 取这一秒出现最多的红色值 r = collections.Counter(block).most_common(1)[0][0]
# 红色值转 ASCII 字符 flag += chr(r)
print(flag) 阅读量 加载中
Comments
评论区
欢迎留言,一起交流~