よーでんのブログ

One for All,All for わんわんお!

HSCTF 7

HSCTF 7参加しました

Although anyone is free to participate in HSCTF, only teams composed entirely of middle and high school students (6-12) in the 2019-2020 school year and are permanent residents in the United States are eligible for prizes. Students attending colleges, universities, or high schools outside of the United States are not eligible for prizes.

参加は誰でも可能だけど、賞金は米国の中高生チームにしかでないよ、みたいな。
賞金狙えるほど技術力があるわけではないので関係ないが、問題は中高生向けの難易度なのかな?

一人寂しく参加しようとしていたところ、
同サークルで同学年のふたばとが参加してきてくれた為、二人での参加となった。

結果

1466チーム中337位。

少し不満なのが、1000チーム以上解いてる問題と150チームくらいしか解けてない問題が 同じ点数になっていたこと。得点の減少率がえぐすぎる。

150チームの方の問題はWebのTraffic Lights W
結局解けてないので得点減ってても影響はないんですけどね・・・
/etc/passwdとか、fileupload.phpとかは抜けたけど、その後どうすればいいのかよくわからない。

「10%問題なのでたぶん難しい」や、「解けたとしてもどうせ100点」
などの気持ちでモチベーションが下がってしまった。(わからなかったことに対する言い訳)

感想

Web

楽しかったのはBroken Token
JWT認証の回避(?)に関する問題。詳しい解法はWriteupに書いてあるが、
署名とかの問題をやるのは初めてだったのでとても良い経験になった。
JWTパッケージがエラーを吐いたとこで躓いてしまったが、
pip install pyjwt==0.4.3でバージョン指定してインストールすれば上手くいった。

あと、Very Safe Loginが追加直後に気づくことができ、即解いた。
SQLi等を試してみるも特に反応なし、続いてソースコードを見たら普通に書いてあった。
大急ぎでFlagを提出し、Solve 1の表示を見て喜んだが、ラグだったようで22番目だった。

Web以外

My First Calculatorが面白かった。入力したのが文字列としてではなく、
Pythonのコードとして解釈されることで、任意コードを実行されてしまうという物。
hogeと入力したときにNameError: name 'hoge' is not definedと表示されてたので気付いた。

エラーメッセージを読むのは大事だなと改めて認識させられた。

あくまでも計算機なので、数字の入力はintしか受け付けない。
ordが1文字ずつしかstrintに変換できなかったので1文字ずつflag.txtの中身を見ていった。
自動化するか、もっといい方法があるか。

むしろもっといい方法があって欲しい

あとがき

「ちょっと知ってれば解ける問題」以上の問題が解けるようになってきているのがとてもうれしい。

Traffic Lights Wとかは、脆弱性を見つけてからが本番って感じがする。