iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
Security

一起資安入門 -- picoCTF 探索與解題系列 第 10

[2021鐵人賽 Day10] General Skills 07

  • 引言
    昨天學到:

    1. tab 鍵自動補完

    2. 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
    https://ithelp.ithome.com.tw/upload/images/20210925/20111429DJ00JEPSt6.png
    這題比較特別,題目提供了一個 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 中了,難怪之後回家目錄不是一開始的樣子。


上一篇
[2021鐵人賽 Day09] General Skills 06
下一篇
[2021鐵人賽 Day11] General Skills 08
系列文
一起資安入門 -- picoCTF 探索與解題30

尚未有邦友留言

立即登入留言