iT邦幫忙

2024 iThome 鐵人賽

DAY 5
0
Security

picoCTF系列 第 5

[Day 5] Virtual Machine 0

  • 分享至 

  • xImage
  •  

我們先來看題目,知道紅色軸和 input 有關,藍色軸的 output 和 flag 有關,而藍色軸又受紅色軸影響,所以我們將針對齒輪傳動的機械結構進行分析,最終根據輸入數據計算出隱藏的 flag。
https://ithelp.ithome.com.tw/upload/images/20240810/20168342V3MYlElMRy.png
hint 1:Rotating the axle that number of times is obviously not feasible. Can you model the mathematical relationship between red and blue?

下載題目所給,並且用 ls 查看,我們得到一個 input.txt 和 Virtual-Machine-0.zip

$ ls 
input.txt    Virtual-Machine-0.zip

解壓縮 Virtual-Machine-0.zip,得到一個 .dae檔。

$ unzip Virtual-Machine-0.zip 
Archive:  Virtual-Machine-0.zip
  inflating: Virtual-Machine-0.dae 

.dae 檔是代表數位資產交換 (digital asset exchange),可以儲存各種內容,包含影像、紋理和 3D 模型,這個檔案是由 XML COLLADA format 組成。
我們可以使用 Adobe Photoshop、Daz Studio、SketchUp 和 Blender 等應用程式檢視 COLLADA 檔案,在這裡我們選擇使用免費的軟體 blender 開啟。

將 .dae檔 import 到 blender,會得到下圖。
https://ithelp.ithome.com.tw/upload/images/20240810/2016834260rER6mID4.png

拆開黑色盒子後,可以看到紅色的齒輪和藍色的齒輪由一個灰色齒輪連接。而紅色齒輪總共有 40 個邊,灰色有 8 個,代表轉動紅色齒輪一圈,藍色齒輪會轉動 5 圈。
https://ithelp.ithome.com.tw/upload/images/20240810/20168342tiGYj6gVVv.png

因為紅色齒輪是 input,藍色齒輪是 output,所以能夠得到簡單的數學式: output = input * 5。

這裡我們輸入 python3 ,直接在 Ubuntu 的終端機中使用 python,先計算出 output 值後,再使用內置函式 hex() 來處理二進位和 16 進位的轉換。

$ python3
Python 3.6.9 (default, Mar 10 2023, 16:46:00) 
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 39722847074734820757600524178581224432297292490103996089444214757432940313 *5
198614235373674103788002620892906122161486462450519980447221073787164701565
>>> hex(198614235373674103788002620892906122161486462450519980447221073787164701565)
'0x7069636f4354467b67333472355f30665f6d3072335f64303563366436337d'
>>> exit()

最後,再將 16 進位轉成 ascii code, 就可以得到答案啦!
底下的指令意思是,將 output 值印出,並且使用 xxd 去做 16 進位和 ascii 的轉換。

$ echo "7069636f4354467b67333472355f30665f6d3072335f64303563366436337d" | xxd -r -p
picoCTF{g34r5_0f_m0r3_d05c6d63}

xxd -r -p 這個指令中,
xxd 用來生成十六進位的表示,或將十六進位數字轉回原始的二進位格式。
-r:這個參數告訴 xxd 反轉其操作,簡單來說就是從十六進位數字轉回原始格式。
-p:這個參數告訴 xxd 以純十六進位數字格式進行處理。

詳細的使用方法可以查看:xxd(1) - Linux man page,或是在 command line 中使用 xxd -h 查看。

小結:
知道 .dae 檔是甚麼以及怎麼使用,還有 xxd 指令如何使用。


上一篇
[Day 4] timer
下一篇
[Day 6] Ready Gladiator 0
系列文
picoCTF30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言