niticCTF
最終順位が48位。
Pwnにもう少し難しい問題が来るかなと予想していて、Pwnだけでまぁまぁ点数が取れるんじゃないかと思っていたが、その予想を外した。
みんなが解ける問題(pwn_monster) or 解けない問題(baby_IO_jail) に二極分化されていて悲しい。もう少し…出してほしかった。
ただ、Pwnに関しては、毎回初心者向けCTFでも5割以下の正答率だったので初参加の人にとっては「調べれば解ける」問題だったので良かった。
CryptoやWebなどの他の分野に挑戦するいい機会になった。
それと同時に、CryptoやWebもしっかり学ばないと良い順位を取ることができないことも学んだ。
niticCTFを開催してくださった方々、ありがとうございました。
Chromeのdeveloper toolで、見るだけ。
web_metaと同様、developer toolで開いて、<style>
の<p>
の要素の設定を削除し、#flag
内のdisplay
の値を適当に10px
と指定すれば、Flagが出てきてコピー出来る。
pwn_monsterの詳しいWriteupはこちら
[TODO] わからなかった…ので復習してwriteupを載せる
GhidraやCutterなどで開く。比較している文字列がわかるので、入力するとFlagが出力される。
cybershefのROT13で、Amountの値をいじると、Flag形式の文字列を得られる。
XORされる前の文字列をY、された文字列をXと置き、XORする値をkとする。
encflag = 'nhtjcZcsfroydRx`rl'
def xor(c: str, n: int) -> str:
tmp = ord(c)
for _ in range(n):
tmp ^= n
return chr(tmp)
dec_flag = ""
for i in range(len(encflag)):
dec_flag += xor(encflag[i], i)
print(dec_flag)
白文字の問題かなと思ったので、Ctrl+a
で全選択してCtrl+c
+Ctrl+v
で適当なところに貼り付けるとFlagを得られる。
完全にSteganoの問題だった。
Stegsolveというツールがあるので、値をいじる。Flagの文字列が見えて得られる。
(色を反転するだけだとnitic_ctf{}
の部分だけしか見えないので注意)