😽

NITIC CTF 2 write-up

2021/09/06に公開約4,300字

NITIC CTF 2に参加しました。あまり時間がとれずすぐに解ける問題だけ解いて90位でした・・・しっかり復習します・・・

Web

web_meta 100pt

HTMLをテキストエディタで開くとmetaタグに
<meta name="description" content="flag is nitic_ctf{You_can_see_dev_too1!}">
と記載があることを確認できる。

flag is nitic_ctf{You_can_see_dev_too1!}

long flag 200pt

spanタグを全て消すだけ
nitic_ctf{Jy!Hxj$RdB$uA,b$uM.bN7AidL6qe4gkrB9dMU-jY8KU828ByP9E#YDi9byaF4sQ-p/835r26MT!QwWWM|c!ia(ynt48hBs&-,|3}

password 300pt

パスワードの文字が紛らわしいので、打ち間違えても通るようにしました。

この問題がわからなかった・・・pythonが・・・
下記のコードが怪しいが、何をしているのか・・・

def fuzzy_equal(input_pass, password):
	if len(input_pass) != len(password):
		return False

	for i in range(len(input_pass)):
		if input_pass[i] in "0oO":
			c = "0oO"
		elif input_pass[i] in "l1I":
			c = "l1I"
		else:
			c = input_pass[i]
		if all([ci != password[i] for ci in c]):
			return False
	return True

Pwn

pwn monster 1 200pt

pwn monsterが完成しました!ライバルのpwnchuは最強で、バグ技を使わない限りは勝てないでしょう。

通常のままだと必ず負けるので、BufferOverFlowを使用し、値を書き換える

nitic_ctf{We1c0me_t0_pwn_w0r1d!}

pwn monster 2 300pt

pwn monster 2ではバグ技を検知する機構を追加しました。

合計して110になっていればChecksumを通過できる。

考えるのが面倒で後回しにしてたら時間切れになってた

Misc

Excel 100pt

Excelファイルのあるセルにフラグが書かれています!見つけて下さい!

検索するだけ
nitic_ctf{plz_find_me}

image_conv 200pt

ステガノグラフィーの問題
うさみみハリケーンの青空白猫を使った

nitic_ctf{high_contrast}

braincheck 300pt

以下の内容が記載されたファイルが渡される

>,>,[>+>+<<-]>>[<<+>>-]<<[-<->]<-----[<+>[-]]>>[<<+>>-]<,[>+>+<<-]>>[<<+>>-]<<[-<->]<>+++++++++++++++++++++++++++++++++++++++++++++++++[<----->-]<[<+>[-]]>>[<<+>>-]<,[>+>+<<-]>>[<<+>>-]<<[-<->]<>++[<----->-]<-[<+>[-]]>>[<<+>>-]<,[>+>+<<-]>>[<<+>>-]<<[-<->]<------[<+>[-]]>>[<<+>>-]<,[>+>+<<-]>>[<<+>>-]<<[-<->]<----[<+>[-]]>>[<<+>>-]<,[>+>+<<-]>>[<<+>>-]<<[-<->]<>++++++++++++++++++++++++++++++++++++++++++++++++++[<----->-]<--[<+>[-]]>>[<<+>>-]<,[>+>+<<-]>>[<<+>>-]<<[-<->]<>+++++++++++++++++++++++++++++++++++++++++++++++[<----->-]<----[<+>[-]]>>[<<+>>-]<,[>+>+<<-]>>[<<+>>-]<<[-<->]<>++[<----->-]<----[<+>[-]]>>[<<+>>-]<,[>+>+<<-]>>[<<+>>-]<<[-<->]<>+++++++++++++++++++++++++++++++++++++++++++++++[<----->-]<[<+>[-]]>>[<<+>>-]<,[>+>+<<-]>>[<<+>>-]<<[-<->]<>++++[<----->-]<--[<+>[-]]>>[<<+>>-]<,[>+>+<<-]>>[<<+>>-]<<[-<->]<>++++++++++++++++++++++++++++++++++++++++++++++++[<----->-]<--[<+>[-]]>>[<<+>>-]<,[>+>+<<-]>>[<<+>>-]<<[-<->]<----[<+>[-]]>>[<<+>>-]<,[>+>+<<-]>>[<<+>>-]<<[-<->]<>++++++++++++++++++++++++++++++++++++++++++++++++++[<----->-]<-[<+>[-]]>>[<<+>>-]<,[>+>+<<-]>>[<<+>>-]<<[-<->]<>+++[<----->-]<[<+>[-]]>>[<<+>>-]<,[>+>+<<-]>>[<<+>>-]<<[-<->]<>++++++++++++++++++++++++++++++++++++++++++++++++[<----->-]<---[<+>[-]]>>[<<+>>-]<,[>+>+<<-]>>[<<+>>-]<<[-<->]<---------[<+>[-]]>>[<<+>>-]<,[>+>+<<-]>>[<<+>>-]<<[-<->]<------[<+>[-]]>>[<<+>>-]<,[>+>+<<-]>>[<<+>>-]<<[-<->]<>+++++++[<----->-]<-[<+>[-]]>>[<<+>>-]<,[>+>+<<-]>>[<<+>>-]<<[-<->]<>++++++++++++++++++++++++++++++++++++++[<----->-]<----[<+>[-]]>>[<<+>>-]<,>>+<<<[-]<[[-]>+++++++++++++++++[<+++++>-]<++.>+++++[<+++++>-]<++.---.-.-------.>>>>-<<<<[-]]>>>>[[-]>+++++++++++++[<+++++>-]<++.>++++++++[<+++++>-]<++++.+++..>++[<----->-]<---.--.>+++[<+++++>-]<++.[-]]

Brainfuckと呼ばれる言語であることはわかった
オンラインでデコード、実行してくれるサイトにかけて実行したがエラーとなった。
そこまでして解きたい問題でもなかったので、知識として知っていたのでいいかと諦めた。
他の方のWriteUp参考に時間があればやるかな・・・

Rev

protected 200pt

普段Reversingやらないので今回はやろう!と思っていたのですが結局手をつけず・・・
解いたら追記します・・・

Crypto

Caesar Cipher 100pt

フラグの中身がシーザー暗号で暗号化されています。 暗号化されたフラグの中身はfdhvduです。

シーザー暗号さえ知っていれば解ける。各3文字ずつずらすだけ。
nitic_ctf{caesar}

ord_xor 300pt

python読めないけど、問題文からxorしているとわかる。
xorの性質から、もう一度xorすると元の値に戻る
enc_flagにflagとして配布された値を入れて実行する。

import os
flag = "nhtjcZcsfroydRx`rl"


def xor(c: str, n: int) -> str:
    temp = ord(c)
    for _ in range(n):
        temp ^= n
    return chr(temp)


enc_flag = "nhtjcZcsfroydRx`rl"
for i in range(len(flag)):
    enc_flag += xor(flag[i], i)

with open("./flag", "w") as f:
    f.write(enc_flag)
print(enc_flag)

nitic_ctf{ord_xor}

tanitu_kanji 300pt

時間かかりそうでやめた・・・

summeRSA 300pt

これ問題見てなかったけど、今見たら解けそうだな。
eが小さい場合のRSA暗号。時間見つけてやる!

終わりに

初心者向けのCTFだけど、まだまだ一瞬で解けないし、Reversingに至っては初心者レベルでも苦戦するレベルなのがわかった。pythonも勉強しないといけないし。短い時間だったけど初心者向けCTFに参加できて楽しかったです。

Discussion

ログインするとコメントできます