あとは法則性を見つけるだけです。asciiなんだろうなという推測のもと、RGB値をテキトーに足したり掛けたりしてasciiに当てはまる計算式を探します。試行錯誤の結果、どうやらRGBの各値の下二桁の総和を165から引くとflagになるようです。」のほうが大きいからおそらく引き算165から引けばいいのか!良い感じにプログラムを書いて終わり。flag![50]問題文フラグは見えない。......writeup問題文のURLに飛んでも何も見当たりません。こんなときはデベロッパーツールの出番です。F12を押してNetworkのタブを開いてページを更新します。Headerを確認してみるとflagがありました。Viewer[100]問題文HTMLファイルの構造を見られるシングルページアプリケーションを作りました!バリデーションもきちんと施したので、安全なアプリケーションです。writeupまずは添付されているzipファイルを解凍してDocerfileを確認します。80flagのpathは「/flag」のようです。Denied」になってしまいます。Denied」になってPOSTすらされないようになっていました。「flag」が含まれている「.html」が含まれていないなんとかこのバリデーションを回避する必要があります。最初はユニコードエスケープシーケンスとかかなとも思ったのですが、入力してみてもうまく動かなかったので違うようです。頭を抱えつつhtmlを確認していたら、POST先であるquery.phpに普通に直でいけることに気付きました。query.phpに直接アクセスしてみます。index.htmlを経由せずに直接query.php宛てにpathをPOSTしてあげればflagが取れそうです。いうわけでpostman(https://www.getpostman.com/downloads/)を起動。JSONでpageに「/flag」をセットしてPOSTします。OPAC[150]問題文サイバー研究会内にある本を検索できるOPACを構築しました。脆弱性が存在するかもしれませんが、決して悪用しないでください。'1」を入力してみます。全部表示されるので、ちゃんと(?)SQLインジェクションの脆弱性があるようです。本たちと同じテーブルにflagは存在しないようなので、flagが存在するテーブルを探す必要があります。こんなときに使えるのがUNION句です。SQLインジェクションの脆弱性を利用することで、あらかじめ宣言されているSQL文に別のSQL文をくっつけることができます。結合するSQL文の実行結果の列数を揃える必要があります。今回の場合だと、ID、Name、Auther、ISBNの4行です。いうわけで以下のように入力してみます。データベース内のテーブルを取得することができます。コメントアウトを表す「--」の後ろにはスペースが必要です。テーブルの数が多いですが、よく見るとflagsというテーブルが存在します。flagが存在するテーブルが判明したので、次はflagsテーブルの中身をUNION句で結合します。--FlagSUNCTF{b3_c4r3fu1_s91_p4r4m373rs}まとめ最初は全然解けなくてかなり焦りましたが、最終的には全問解けて安心しました。ありがとうございました。Programming編Programmingのwriteupです。Web編Web問題のwriteupです。Forensics編Forensicsのwriteupです。2019に参加しました。月別アーカイブリンクプライバシーポリシーお問い合わせはてなブログをはじめよう!aokakesさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。