赛后复现
题目下载
链接:https://pan.baidu.com/s/1HAejuLsdeCsqVrJup5I83g
提取码:10q5
参考:https://github.com/EvilBunnyWrote/Write-ups/tree/main/Google-CTF-2021/misc/raiders_of_corruption
做题过程
解压题目后是这样10个文件
用file
看一下file disk*
关于RAID
独立硬盘冗余阵列(RAID, Redundant Array of Independent Disks),简称磁盘阵列。利用虚拟化存储技术把多个硬盘
组合起来,成为一个或多个硬盘
阵列组,目的为提升性能或资料冗余,或是两者同时提升。
在运作中,取决于 RAID 层级不同,资料会以多种模式分散于各个硬盘,RAID 层级的命名会以 RAID 开头并带数字,例如:RAID 0、RAID 1、RAID 5、RAID 6、RAID 7、RAID 01、RAID 10、RAID 50、RAID 60。每种等级都有其理论上的优缺点,不同的等级在两个目标间获取平衡,分别是增加资料可靠性以及增加存储器(群)读写性能。
简单来说,RAID把多个硬盘组合成为一个逻辑硬盘,因此,操作系统只会把它当作一个实体硬盘。
见https://zh.wikipedia.org/wiki/RAID
RAID 0
RAID 0亦称为带区集。它将两个以上的磁盘并联起来,成为一个大容量的磁盘。在存放数据时,分段后分散存储在这些磁盘中,因为读写时都可以并行处理,所以在所有的级别中,RAID 0的速度是最快的。但是RAID 0既没有冗余功能,也不具备容错能力,如果一个磁盘(物理)损坏,所有数据都会丢失,危险程度与JBOD相当。
RAID 5
RAID Level 5是一种储存性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分割)技术。
RAID 5至少需要三个硬盘,RAID 5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID 5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID 5的一个磁盘数据发生损坏后,可以利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障,但保障程度要比镜像低而磁盘空间利用率要比镜像高。RAID 5具有和RAID 0相近似的数据读取速度,只是因为多了一个奇偶校验信息,
根据分析的结果,这是RAID5, 接下里要做的是把10个img组合成一个磁盘
但是不能确定这是个文件是按顺序编号的
用010editor打开disk01.img看看
有大段文本
其他几个img:
disk06.img
disk04.img:
strings disk01.img >data.txt
可以确定硬盘中存储有一个shaks12.txt,而且这个文件被分别存储到了好几个img中
google找到原文,然后对比img中看到的文本确定几个img的顺序
原文:https://www.gutenberg.org/files/100/old/shaks12.txt
disk01grep "s, yea or no;" disk*
disk07
disk04
disk06
disk03
disk05
disk02
disk08
所以顺序是 1-7-4-6-3-5-2-8-9-10
组合
需要用到工具mdadm, 下载安装: apt-get install mdadm
$ for i in {1..9}; do sudo losetup /dev/loop$i disk0$i.img; done
$ sudo losetup /dev/loop10 disk10.img
$ sudo mdadm --create --assume-clean --level=5 --raid-devices=10 --chunk=4 /dev/md0 /dev/loop1 /dev/loop7 /dev/loop4 /dev/loop6 /dev/loop3 /dev/loop5 /dev/loop2 /dev/loop8 /dev/loop9 /dev/loop10
解释
losetup:
将磁盘镜像文件虚拟成块设备
用法
losetup /dev/loop1 floppy.img
mdadm
参考:https://blog.csdn.net/wm0615ht/article/details/51724993
–assume-clean
告诉mdadm这个array已经clean。当array从一个严重的故障中恢复时,这个选项会保证没有数据会被覆盖。当创建RAID1和RAID10时,这个选项也能避免初始化同步。但是使用该选项必须要很谨慎。
--level=5
设置RAID级别,RAID级别有(有些是同义词,比如raid5和5):
Linear,raid0,0,stripe,raid1,1,mirror,raid4,4,raid5,5,raid6,6,raid10,10,multipath,mp,faulty。
--raid-devices=10
指定一个RAID中active devices的数目。
--chunk=4
条带大小
可以看到挂载了一个新的磁盘
打开就是flag