はじめに
OSCTF 2024に参加してきました。
結果は約740チーム中346位でした。
個人的にWebのAction Notesが解けなかったのが悔しかったです。
大会はJeopardy形式ではあるものの、ソースコードから脆弱性を見つけるようなものではありませんでした。
そういう意味ではHTBの問題に似ています。
今回は私が解いた問題の中で面白かったものを解説していきます。
Forensics
The Lost Image Mystery
image.pngが渡されます。
この画像はこのままだと開けないようです。
fileコマンドとhexeditコマンドで確認してみたところ、マジックナンバーが適切ではないような気がしたので
ここを直せば、画像が開けるようになり、フラグが読み取れそうです。
試しにこの画像をJPEGファイルとして修復しようと試みました。
この画像ファイルだとSOI(Start Of Image),APP0(Application Segment 0)マーカが記述されていなかったので
最初の数バイトを以下のように書き換えます。
FF D8 FF E0 00 10 4A 46 49 46 00 01 01 00 00
すると画像が開けるようになり、そこにフラグがありました。
The Hidden Soundwave
Alan Walker.mp3という音声ファイルが渡されるので、一旦聴いてみます。
すると最後の方に奇妙な音声が混ざっていました。
早速Audacityのspectrogramモードで解析してみます。
すると、そこにフラグがありました。
Seele Vellorei
wordファイルが渡されたので開いてみます。
この時点ではあまり気になるところはありません。
ワードファイルは圧縮ファイルとして解凍することが可能です。
そこで、解凍したファイルの中身にフラグが入っていないか確かめてみます。
案の定document.xmlの中にフラグが入っていました。
Web
Action Notes
問題で配布されたURLに行ってみると、RegisterとLoginページに推移するボタンが置かれているだけでした。
Registerページでadminとして登録しようとすると、adminは既に登録済みと言われてしまいました。
代わりに他のIDで登録し、それでログインしてみました。
するとnotesというページに推移しました。
ここでは任意の文字列をノートとして登録しておけるようです。
色々パラメータをいじっていると、エラーログがレスポンスとして帰ってきました。
どうやらこれはFlaskで動いていて、デバッグモードが有効になっているようです。
そのエラーの中にそれの原因となったソースコードの部分が記述されていたので見てみると
面白い箇所がありました。
登録したノートの値をテンプレートエンジンで表示しています。
SSTIが可能なのではと思い、試してみたのが下の図です。
ですが、どれも上手くいきませんでした。
このウェブサイトはデバッグモードが有効になっていることからconsoleページへのアクセスが可能になっています。
そこで、PINコードを推測し、consoleページへのアクセスを奪おうと思いましたが
それには必要な情報をパストラバーサルか何かで取得する必要があります。
私はその方法が分からず、結局時間内に解くことはできませんでした。
おわりに
今回は順位としてはあまり良い結果ではありませんでしたが、ローカル環境での攻撃検証が
以前より柔軟に行えるようになっていた自分に驚きました。
特にAction Notesでは、実際にflaskでWebサイトを立ち上げ、どのような機能が脆弱になるかを直感的に理解することができました。