1. 程式人生 > 其它 >[google CTF 2021] RAIDERS OF CORRUPTION 復現

[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