[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
有點晚了,過兩天仔細看看


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM