Harekaze mini CTF 2020 write-up

ctf.harekaze.com

CTFに参加して久しぶりに問題が解けました。

 Harekaze mini CTF 2020に一人チームで参加しました。結果は393点でした。

解いたのは、

  • Welcome (misc) (91pt)
  • NM Game (misc) (179pt)
  • What time is it now (Web) (123pt)

でした。

ソースコードが見れる問題が多くて良かったです。

解いた問題

NM Game

競プロ。それぞれの山のGrundy数は残りの数%4になる。このXORを0の状態にして渡したい。

それぞれの山から1-3個取り除いた場合のXORの値を全探索して0になったらそれを出力するようにする。2ゲーム名以降は入力が1回増えたり文字列によって改行があったり無かったりする点に注意。

 

What time is it now

dateコマンドを実行しているが、そこを複文にするなどしてコマンドを実行したい。しかしescapeshellcmdセミコロンなどはエスケープされてしまう。しかし、対になる’や"はエスケープされないのと-fで入力ファイルを取れるので、flagのファイルを入力に取るようにするとエラーとしてファイルの中身が取れた。

http://harekaze2020.317de643c0ae425482fd.japaneast.aksapp.io/what-time-is-it-now/?format=%s%27%20-f%20%27/flag

 解けなかった問題

rsa

Eと対になるDが分かれば \(c1^{D}\)を出せばOK。c2,c3からだとpq両方入った項があってどうすれば良いのか分からなかった。

\( pq=n \)なのだから無視できるらしい。確かに。

JWT is secure

ソースコードを見るとアルゴリズムを改竄するのは不可能そうだった。鍵をファイルに吐き出しているのでそれを読み取ったり、別のトークンの鍵が分かったりすると解けそうだと思った。しかし、実際には分かるものが無いので駄目だと感じた。

実際には配布されたファイルで.htaccessの中身が分かるようになっているのでそれを鍵に指定すると良かったらしい。