引言
昨天學到:
tab 鍵自動補完
unzip ,這個昨天沒有仔細講,但基本使用相當簡單,遇到 zip 檔只要 unzip xxx.zip
就會自動解壓縮。(若沒有安裝過,使用 sudo apt install unzip
)
zip 則是壓縮用, zip xxx your_path/*
會將 your_path 目錄下的所有檔案壓縮到 xxx.zip 中,沒有安裝的話可以藉由 sudo apt install zip
安裝。
General Skills / Magikarp Ground Mission
這題比較特別,題目提供了一個 On-Demand Instance (隨需實例) ,
簡單來說就是一個有時間限制的虛擬主機,會計時1小時,時間到就會關閉。
按下右邊的 Launch Instance ,下方會出現讓你連線的命令,
複製起來貼到你自己的 shell 中,格式如:
$ ssh ctf-player@venus.picoctf.net -p 60635
ssh 是用來連結遠端主機的命令,
並保證安全連線,上述的命令翻譯成
「連結到主機 venus.picoctf.net
埠號 60635 ,以帳號 ctf-player 登入」
其中 -p
這個 option (選項) 用來指定埠號。
連線時會出現:
The authenticity of host '[venus.picoctf.net]:60635 ([3.131.124.143]:60635)' can't be established.
ECDSA key fingerprint is SHA256:[---一串英文跟數字---].
Are you sure you want to continue connecting (yes/no/[fingerprint])?
鍵入 yes 即可。
連結成功後輸入題目給的密碼: ee388b88
,成功登入取得 shell 操控權,
就可以跟自己的 shell 一樣下命令。
你可以看到你的 shell $
前面的帳號與主機變成:
ctf-player@pico-chall$
表示現在正在 pico-chall 這個名字的主機上,帳號是 ctf-player 。
題目說先打 ls
命令,我們先照做,可以看到兩個檔案:
ctf-player@pico-chall$ ls
1of3.flag.txt instructions-to-2of3.txt
我們看 1of3.flag.txt
那個檔案:
ctf-player@pico-chall$ cat 1of3.flag.txt
picoCTF{xxsh_
看起來是 flag 的一部分,且我們可以猜測一共3個部份。
再來看看 instructions-to-2of3.txt
:
ctf-player@pico-chall$ cat instructions-to-2of3.txt
Next, go to the root of all things, more succinctly `/`
它請我們到根目錄 /
去:
ctf-player@pico-chall$ cd /
ctf-player@pico-chall$ ls
2of3.flag.txt boot etc instructions-to-3of3.txt lib64 mnt proc run srv tmp var
bin dev home lib media opt root sbin sys usr
可以看到有兩個跟剛剛差不多的檔案, 2of3.flag.txt
應該是第二部份的 flag ,
我們看看 instructions-to-3of3.txt
:
ctf-player@pico-chall$ cat instructions-to-3of3.txt
Lastly, ctf-player, go home... more succinctly `~`
咦?又要回去家目錄嗎,回去看看:
ctf-player@pico-chall$ cd ~
ctf-player@pico-chall$ ls
3of3.flag.txt drop-in
居然變了,有點神奇,看起來三個片段都拿到了,先看看 drop-in
是啥:
ctf-player@pico-chall$ cd drop-in/
ctf-player@pico-chall$ ls
1of3.flag.txt instructions-to-2of3.txt
原來是剛剛的第一片段,而第二片段在根目錄,我們用個命令將他們串起來吧!
ctf-player@pico-chall$ cat {1of3.flag,/2of3.flag,../3of3.flag}.txt | tr -d '\n'
picoCTF{xxsh_0ut_0f_\/\/4t3r_3ca613a1}
大括號是分配律的概念,意思等同於
cat 1of3.flag.txt; cat /2of3.flag.txt; cat ../3of3.flag.txt;
可參考brace expansion。然後 output 由管道
|
傳給 tr 當作 input ,
它會把換行符號\n
去掉後輸出。
順利得到 flag。
p.s: 我重新連線後,發現一開始我們根本不在家目錄,
一開始就在 drop-in
中了,難怪之後回家目錄不是一開始的樣子。