芜湖~
是真累呀 原本一天的时间 硬打了一天半 还是那句话 不评价 各位道友心中自有公论
我misc手又发现一个小小的非预期 哎 没想到线下也有这种情况
欧克 以下是我自己的一些思路和解析 有什么问题或者建议随时都可以联系我
2023第七届河南省高等学校信息安全对抗大赛-御网杯-ISCC2023线下赛
目录
Misc
Color
代码解释
Sarilang
看到音频第一步是干啥
补充
Badimages
加油各位( •̀ ω •́ )y 期待与君再相逢
Misc
Color
只有一个txt文件
当文件打开 里面的文件暴露在我们眼前时 哇哦
我相信很多老手立马就明白怎么做
这就是一道很简单的RGB转图片的题目 更不用说文件名还是个提示
(当然新手就一定要多积累)
这里我们上脚本(带解析)
我们需要写一个脚本 创建一个空白的RGB图像,然后从指定的文件"color.txt"中读取颜色信息,并将这些颜色信息逐个应用于图像的每个像素点。最后,通过im.show()方法显示图像。
from PIL import Image
# 定义图像的宽度和高度
x = 500
y = 500
# 创建一个新的RGB图像
im = Image.new("RGB", (x, y))
# 打开并读取颜色文件
file = open("./color.txt", "r")
# 遍历图像的每个像素for i in range(x):
for j in range(y):
# 从文件中读取一行颜色信息,并去除换行符
line = file.readline().strip("\n")
# 去除括号并分割RGB值
line = line.replace("(", "").replace(")", "")
rgb = list(line.split(","))
# 将颜色值转换为整数,并将RGB值应用到当前像素
im.putpixel((i, j), (int(rgb[0]), int(rgb[1].strip(" ")), int(rgb[2].strip(" "))))
# 显示图像
im.show()
代码解释
上述代码中,我们使用了PIL(Python Imaging Library)库来进行图像处理。具体步骤如下:
- 引入Image类:我们从PIL库中导入Image模块,这样我们就可以使用其中的函数和方法。
- 定义图像尺寸:我们使用变量x和y分别指定图像的宽度和高度,这里设置为500。
- 创建空白图像:通过Image.new()函数创建一个新的RGB图像对象,使用参数"RGB"指定图像的颜色模式为红绿蓝(RGB),并将宽度和高度作为参数传递进去。
- 打开颜色文件:通过open()函数打开名为"color.txt"的文件,并指定为只读模式。该文件应该包含一系列RGB颜色值,每行一个颜色值。
- 遍历图像像素:使用嵌套的for循环遍历图像的每个像素点,外层循环控制行数,内层循环控制列数。
- 读取颜色信息:使用file.readline()函数逐行读取文件中的颜色信息,并通过.strip("\n")方法去除每行末尾的换行符。
- 解析颜色信息:通过字符串操作去除括号,并使用.split(",")方法将RGB值分割成字符串列表。
- 转换颜色值:使用int()函数将RGB字符串转换为整数,并分别赋值给red、green和blue变量。
- 应用颜色信息:通过im.putpixel()方法将RGB值应用到当前遍历到的像素点上,传递参数为当前像素的坐标(i, j)和颜色值(red, green, blue)。
- 显示图像:通过im.show()方法显示生成的图像。
- 请确保在运行代码之前,已经准备好了名为"color.txt"的文件,并按照每行一个颜色值的格式进行存储,例如:(255, 0, 0)表示红色。
直接运行得到flag
flag{fb8c67f9-712b-4f3d-9cb2-9219685421a9}
Sarilang
还是只有一个文件 不过这次是一个音频
歌挺好听的
看到音频第一步是干啥
甲:那它是音频第一步肯定看波形图呀
乙:咦 misc不关什么类型,第一步一定是看文件源码
我:什么 拿到音频第一步不应该是享受歌曲吗? 草原最美的花 火红的撒日朗
欧克欧克 回到正题
其实最开始我也看过波形图 但没有什么用
那我们就从源码看起 010走起
我们在文件尾发现了很明显的提示
AES加密 密码是12345678
可这是离线状态 断网
我们想想有什么隐写软件 是用AES加密的
静默之眼(silenteye) 别问我怎么知道(都是电脑上有的工具试错的) 不过这个工具挺冷门的
我们选择文件 选择解密
运行得到一个txt的文件(解压过的)
里面是密密麻麻由012组成的编码
我的天 最烦这种了
欧克欧克 现在让我们仔细思考一下
什么编码是用三个字符组成的
这一下子 我还真没想起来几个
不过我们在仔细观察 如果非要转一个字符
0最常变的不就是.
而1长的想!
这个2那就是?
那我们直接一手替换
卧槽 不转不知道一转吓一跳 这不是brainfuck编码的变种码
断网 这种要么使用脚本 要么使用离线的工具箱 还好我都有 不愧是一个misc手
python2 ook.py -o 2.txt
保存到记事板里
再运行一次
python2 ook.py -b 3.txt
得到flag 哎 这个题主打的就是冷门
补充
这里补充一下知识点
Ook! Ook! 是一种通过模仿猩猩语言来表达的编码。它是在Brainfuck基础上衍生出来的一种变体编码。Ook! Ook! 使用三个字符组成,即 "Ook."、"Ook?" 和 "Ook!"。
每个 "Ook!" 表示一个指令。以下是对应关系:
- "Ook. Ook?":相当于 Brainfuck 中的 "<"
- "Ook? Ook.":相当于 Brainfuck 中的 ">"
- "Ook. Ook.":相当于 Brainfuck 中的 "+"
- "Ook! Ook!":相当于 Brainfuck 中的 "-"
- "Ook! Ook.":相当于 Brainfuck 中的 "."
- "Ook. Ook!":相当于 Brainfuck 中的 ","
- "Ook! Ook?":相当于 Brainfuck 中的 "["
- "Ook? Ook!":相当于 Brainfuck 中的 "]"
Ook! Ook! 编码的使用方式和含义与 Brainfuck 类似,只是使用了不同的语言描述
Brainfuck是一种由八个字符组成的编码。这种编码是一种极简主义的编程语言,由八个指令符号组成,包括">"、"<"、"+"、"-"、"."、","、"["和"]"。
Badimages
看看名字 大概意思是坏掉的镜像
盲猜这个题的思路是要恢复里面的一个文件或者数据
但是但是这个题有非预期解 这要是线上又是给我加分
我直接cat他 哈哈
在最后 我们发现了flag 直接结束
正常解 也就是我最开始说的思路
感兴趣的可以去试试
后期我要时间 也会上传