[google CTF 2021] RAIDERS OF CORRUPTION 复现

赛后复现
题目下载

链接: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

disk01


grep "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


///////2021/09/06更新//////
读到了一篇RAID重组有关的文章,有一些工具可以辅助完成重组
https://mp.weixin.qq.com/s/ddmXGoEgUb5Vy1VieSVgCA
有点晚了,过两天仔细看看

posted @ 2021-07-30 20:43  云千  阅读(810)  评论(0编辑  收藏  举报