zoukankan      html  css  js  c++  java
  • [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
    有点晚了,过两天仔细看看

  • 相关阅读:
    【PTA】6-11 先序输出叶结点 (15分)
    【PTA】6-10 二分查找 (20分)
    【PTA】6-9 二叉树的遍历 (25分)
    【PTA】6-8 求二叉树高度 (20分)
    【PTA】6-7 在一个数组中实现两个堆栈 (20分)
    【PTA】6-6 带头结点的链式表操作集 (20分)
    【PTA】6-5 链式表操作集 (20分)
    【PTA】6-4 链式表的按序号查找 (10分)
    【PTA】6-3 求链式表的表长 (10分)
    Meteva——让预报检验不再重复造轮子
  • 原文地址:https://www.cnblogs.com/yunqian2017/p/15080917.html
Copyright © 2011-2022 走看看