SECCON CTF 2023

今回はwebとcryptoを1問ずつ解くことができました。 webBad JWT JWTの署名処理に問題があり、secret無しに検証を通るsignatureを作成できました。 const algorithms = { hs256: (data, secret) => base64UrlEncode(

SECCON Beginners CTF 2023

毎回Webをメインに解いていましたが今回はあまり解けなかったのでmiscばかり解いていました。 (double checkは前回調べた内容からJWTの生成まではできていましたがプロトタイプ汚染についてすっかり忘れてしまっていて数時間かけて何も進みませんでした) YARO 正規表現でルールを作成できましたがリクエスト数を少なくしたかったので以下の関数を作成して一度で一文字調べて解きました。 const template = `rule flag { strings: $flag = /__T_

SECCON CTF 2022

今回は時間が取れなかった事もありますが私は前回と同じくweb1問のみ解きました。 1問しか解いていないのに189/726位でしたwebskipinx 去年のgormと同様にライブラリの仕様を確認することで解ける問題でした。 nginxはクエリ文字列にproxy=nginxを追加し、本体ではproxyにnginxがあればアクセスを拒否していました。 nginxのコンテナしかportが公開されていないので回避してアクセスすることは難しそうで、このproxyのクエリの処理を通り抜ける必要がありそうでした。 Expressを使用してクエリ文字列を取得しているのでexpressのドキュメントを確認し、これはデフォルトではnodejsのquerystringを用いてパースしていました。 Express

SECCON Beginners CTF 2022

Utilmain.goを確認すると以下のように渡されたアドレスをそのまま文字列として結合してshに渡しているのでCommand Injectionが可能であり、ここにアドレスの後にflagを取得するコードも含めて渡せば取得できます。 flagは以下で書き込まれているので RUN echo "ctf4b{xxxxxxxxxxxxxxxxxx}" >

SECCON CTF 2021

welcomeを除きチームで2問しか解けませんでした webVulnerabilities postされたjsonを元にクエリを作成して取得したDBの情報が返却され、jsonにはNameの指定が必須で、NameはflagになっていたのでNameで絞り込んで取得することはできませんでした。 gormが使われていて、Nameの中身を空にできればgormによって無視されるので別の条件を使うことができそうでした。 jsonのチェックはNameに対しては行っていましたが併せてnameも指定すると、json["Name"]で空でないかのチェックを通して、gormには中身が空のnameを渡すことができました

SECCON Beginners CTF 2021

welcomeチームでの参加でしたがこれは取りたかったので(少し前にあったDEF CON CTF 2021 QUALSで一問たりとも解けずに終わってしまったので)開始5分前から正確な時計を横においた上でDiscordとスコアサーバー開いて張り付いていました。 Cryptosimple_RSAeが小さいのでgmpy2.irootを使うだけでflagが得られました。 Logical_SEESAWプログラムを見てみるとflagとkeyを用意して、