Nickブログ

セキュリティを中心に過ごしているNickのブログです。

UMassCTF21 Writeup見ながらやる(Web)

f:id:NickShadows:20210330112015p:plain

Hermit - Part 1

f:id:NickShadows:20210330094616p:plain

参考writeup codelearn.me


普通に画像アップロードしてみました。
f:id:NickShadows:20210330090337p:plain



画像を選択するとPHPのエラーが発生しました。
f:id:NickShadows:20210330090434p:plain



Writeup通りにファイルの内容を変更するといかにもコマンド実行したそうなエラーになりました。
f:id:NickShadows:20210330090824p:plain



拡張子に「.php」は含まず、「.png」だけでしたが、内容を解釈しているようでした(そんなことあるのか?)
f:id:NickShadows:20210330090926p:plain



アップロードしたPHPの通りにパラメータを設定するとコマンド実行できるようになりました。
f:id:NickShadows:20210330091140p:plain

lsコマンドでたどっていくと、フラグ用のテキストファイルがありました。
f:id:NickShadows:20210330091439p:plain


戦犯っぽい「show.php」の内容です。
f:id:NickShadows:20210330091904p:plain


何が原因なのかわからなかったので、ローカルにサーバ立てて検証しました。
f:id:NickShadows:20210330093546p:plain

f:id:NickShadows:20210330093616p:plain

ひとまず再現はできました。
f:id:NickShadows:20210330093705p:plain

指定しているファイルをなくしてみます。
f:id:NickShadows:20210330093808p:plain


指定した文字列がそのまま表示されました。
ifの中のechoですね。
f:id:NickShadows:20210330093839p:plain


初めて見る「@include」が原因のようでした。
ドキュメントはこれですかね。
「指定されたファイルを読み込み、評価します。」と記載があるので、確かにPHPコードが動きそうでした。
www.php.net

PikCha

f:id:NickShadows:20210330094637p:plain

参考writeup
https://github.com/JackLowry/pikcha https://github.com/JrGoomer/CTF-Writeups/blob/master/UMass2021/PikCha.md https://szymanski.ninja/en/ctfwriteups/2021/umassctf/pikcha/


適当に入力してみましたが、意味がわかりませんでした。
これ解いた人はどんなきっかけから解いたんでしょうか。
f:id:NickShadows:20210330094955p:plain

Writeup通りCookieをデコードしました。
雰囲気からJWTであるということはわかってましたが、ここからどうやってフラグ出すんでしょうか。
f:id:NickShadows:20210330095217p:plain


Writeupを読むと、ポケモンの図鑑Noを当てていくらしいです。
f:id:NickShadows:20210330095621p:plain

f:id:NickShadows:20210330095945p:plain

f:id:NickShadows:20210330095957p:plain

カウントが進みました。
これを500回やれば良さそうです。

答えはset-Cookieされるので、そこから読み取っていけば自動で出来そうです。
pythonでのpocが多かったので、参考に実行してみます。
f:id:NickShadows:20210330101532p:plain

Burpでキャプチャしているのですが、うまく行っているようです。
f:id:NickShadows:20210330101614p:plain

フラグが出てきました。
f:id:NickShadows:20210330105520p:plain

pythonメモ
http用

requests


json用

json
json.loads()

heim

f:id:NickShadows:20210330110300p:plain

参考Writeup
https://domiee13.github.io/posts/UMassCTFWriteUp2/

とりあえず入力して「Enter」を押したところ、ダイレクトにトークンが表示されました。
f:id:NickShadows:20210330110501p:plain

Writeupを見ると、ディレクトリを調査するようです。
確かに、ディレクトリを探すくらいしかやることはなさそうです。

CTFは終了しているので、大量にリクエストは送らず、Writeupに記載してあるディレクトリだけ見ます。
f:id:NickShadows:20210330110807p:plain

Authorizationヘッダを使用しましたが、アクセスできず。
f:id:NickShadows:20210330111008p:plain

「Odin」しか見れないのでしょうか?
エラーメッセージを読むことは何でも大事ですね。

Odinで再度トークンを発行したところ、フラグが表示されました。
f:id:NickShadows:20210330111141p:plain

感想

どの問題も学びがあって面白かったです。
Writeupが公開されていると、終わった後も検証が出来るのでとても助かります。

今回はひねったような回避系が無かったので、簡単な部類だったのでしょうか。
私はCTFは詳しくないので、たまたまやってみようと思ったCTFがこのレベルであってくれて本当に助かりました。

リアルタイムでやるかはわかりませんが、引き続きWriteup見ながらいろいろ検証してみようと思います。

PikCha2はWriteupがあったのですが、画像加工がうんぬんで面白くなさそうだったので実施していないです。