welcomeを除きチームで2問しか解けませんでした

web

Vulnerabilities

postされたjsonを元にクエリを作成して取得したDBの情報が返却され、jsonにはNameの指定が必須で、NameはflagになっていたのでNameで絞り込んで取得することはできませんでした。

gormが使われていて、Nameの中身を空にできればgormによって無視されるので別の条件を使うことができそうでした。

jsonのチェックはNameに対しては行っていましたが併せてnameも指定すると、json["Name"]で空でないかのチェックを通して、gormには中身が空のnameを渡すことができました

{Name: "aaaaa", name: ""}

これでNameは無視できましたが、このままではただ条件無しで一つ取得するクエリになってしまい、最後に追加されているflagは取得できません。

そこでgormが内部で自動的に付与するIDを使用してflagを指定し、これをhttps://vulnerabilities.quals.seccon.jp/api/vulnerabilityにpostすることでflagを取得することができました。

{Name: "a", name: "", ID: 14}
{"Logo":"/images/SECCON{LE4RNING_FR0M_7HE_PA5T_FINDIN6_N0TABLE_VULNERABILITIE5}.png","URL":"seccon://SECCON{LE4RNING_FR0M_7HE_PA5T_FINDIN6_N0TABLE_VULNERABILITIE5}"}

misc

s/<script>//gi

まず最初に解けるまでsedを回し続けることを試しましたが、時間がかかり過ぎて終わりが見えないのでgoで簡単に同様の事を行う物を組みました。

これでも終わらないので先頭から順番に<script>を探して削除し、見つけた場合少し戻って探索を続ける事にしましたがこれも時間がかかるのでこのあたりで一度諦めました。

最初数回は全体に対する置換で大きく減るようになっていたので2つの方法を組み合わせると解けたそうです。