BehindMe

一看就知道是NTFS数据流隐写,盲猜隐藏的文件就是flag.txt
直接

1
notepad behindme.txt:flag.txt

flag的痛

音频文件,直接扔audacity,调高频率就能看到flag

呜呜呜

winhex打开,尾巴看到7z文件,复制那部分粘贴进010保存或者dd得到一个7zip,ARCHPR无法爆破,搜了一下爆破7z文件的方法,弄了个软件给我爆出来口令是1,但是是错的,之后丢进kali

1
rarcrack 1.7z --threads 4 --type 7z

放着爆了半天然后挂起了,心态炸了就没去做,看了hint是弱口令,但是也懒得去试,然后没出。
一看官方wp其实就是123456,有点遗憾,这么简单的题目都没出来

forever c1

第一次见识,但是也不算第一次。使用curl发送请求在之前hackergame是有过例子的,只是不知道,也没做。
以下是官方wp:
指定本地客户端口号访问指定网址即可,比如使用curl

1
curl 192.168.31.198:30000 --local-port 193

如果发现不可以,可能是因为 NAT 端口映射的原因,建议使用公网服务器。

当然,你也可以使用其他方法,比如:
使用 C/C++/Java/Python 的 Socket 编程,指定本地端口
使用 Scapy 直接构造数据包
使用 IPTables 等工具映射本地端口

科学炼丹

看都没看,机器学习就离谱。
以下是官方wp:
考察点:jpg文件头、深度学习框架使用/图片相似度比较
首先下载下来压缩包,可以看到test和train文件夹,并且train的每个图像文件名就是该图片上的字母,test的图像名称是从0开始编号的,对文件头比较敏感的同学应该能发现0.jpg和1.jpg两张图片结合起来是jpg的文件头FFD8FF

方法1
第一种想法就是把这个题归类成一个机器学习的任务,train中给出了图像和它们对应的标签,所以这是一个有监督的机器学习任务,大致思路如下:

首先将train中的图像(大小20050)分割成小份(4份大小5050),放到对应标签的文件夹下
通过已分割的图像和标签训练出一个模型,然后识别出test中每张图片上的数字的内容
将识别出的结果严格按顺序排好,以16进制形式写入文件当中,就可以得到一张jpg图像
最后得到的jpg图像就是flag:

方法2
如果仔细观察一下给出的图像,会发现这里面每个数字或字母对应的图像都是一样的,并且相互之间有明显差别(肉眼就能分辨出来),所以还可以用另一种方式,就是图像相似度的方式来进行识别,通过对比test中每个分割后图片和train中有标签图像的相似度,确定test中图像的标签,然后写成图像

这道题可能是出题人的脑洞开的太大了,不光有机器学习的部分,还要熟悉jpg文件的这种文件头才能有完整的思路,而且时间也有点紧,最后大家没人做,可能还浪费了一些时间,出题人给大家道个歉qwq

关于最终的脚本,因为是以jupyter notebook格式写的,我把它们放到了网盘上,这里只提供了第一种思路的解题方法,只要把文件放在train和test同一目录下,按顺序执行就好,中间会多出来一些临时文件夹和一个超大的模型h5文件(因为直接调了包里的模型,参数太多了),最后生成的res_flag.jpg就是结果,如果对深度学习感兴趣可以找一下MNIST手写数字识别,这个题目算是一种改编

Base的千层套路

这题和下一题都是密码学题目,但是和misc没啥区别。
已经有肉眼看穿题目给的所有base的能力了,没啥难度看着解就行

PigIsSoCute

hint是猪圈栅栏,没难度,下载下来的txt是一个b64编码的图片,去b64转文件得到猪圈密码的图片,对着识别解密得到字符串,进行栅栏解密得到可读的明文套上c1ctf{}即可