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.zlib
29 29.zlib
337.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 fps
54 秒
可以看出是一秒一张图片,同时看视频内容可以猜测:每一秒的红色数值,正好能转成一个字符。
EXP
import subprocess
import collections
video = "chromatic.mp4"
# 取视频左上角 1x1 像素,每帧输出 RGB
cmd = [
"ffmpeg",
"-v", "error",
"-i", video,
"-vf", "crop=1:1:0:0,format=rgb24",
"-f", "rawvideo",
"-"
]
data = subprocess.check_output(cmd)
# 每帧 3 个字节:R G B
r_values = [data[i] for i in range(0, len(data), 3)]
fps = 30
flag = ""
# 每 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)