💙
Full Weak EngineerCTF 2025 作問者Writeup
JUCKです。しれっとFull Weak EngineerCTFにてRev2問,Misc1問を作成していました。
No need Logical Thinking
論理的思考はどんな物事にも必要。
Logical Thiniking is need for everything.
solution
このプログラムはPrologで記述されたもので、process_flag
でflagを読み出しtransform_codes()
でflagの元の文字列+インデックスの値をASCiiにするプログラムとなっています。
def main():
try:
with open("output.txt", "r", encoding="utf-8") as f:
content = f.read()
i=1
# 1文字ずつ出力
for ch in content:
print(chr(ord(ch)-i))
i+=1
except FileNotFoundError:
print("Error: 'output.txt' not found.")
if __name__ == "__main__":
main()
fwectf{the_Pr010g_10gica1_Languag3!}
Mystery Zone(なぞのばしょ)
よぉ~みんな! HelloWorld だぜ!!!
flag を探してたら変な所に迷い込んじまったみてぇだ……。
俺を操作して flag を見つけてくれ~!!
お前たち最高だぜ!
Whoa, duuuudes! HelloWorld, righteous!
I was cruisin' the EXE lookin' for the flag when I totally got lost in this gnarly place, man . . . .
Gimme a ping and help me find that flag, little dudes! Cowabunga!
solution
Unityで作成されたasusnさんの持ちネタであるターミナルトークのようなゲームが配布されます。
UnityということでC#で記述されているので、dnSpyを使って解析することが出来ます。
Unityのコードは主にAssembly-CSharp.dll
に書き込まれるので、Challenge_Data/Managed/Assembly-CSharp.dll
をdnSpyに投げます。
ゲーム内座標が(65536f,65536f)になるとflag獲得になりますが、その前に SceneManager.LoadScene("Error")
でエラーに遷移するので、SceneManager.LoadScene("Flag")
をどこかに書き込めばflag獲得です。
fwectf{K494ku_no_Ch1k4r4_t7e_5u63h!}
Poison Apple
iOSではウォッチドッグタイマが故障した時に返ってくる不思議な4バイトがあるらしい…
大文字にしてfwectf{}で囲ってね
例:1234ABCD→fwectf{1234ABCD}
Apparently, there are four special bytes returned when the watchdog timer fails on iOS...
Capitalize them and enclose them in fwectf{}.
e.g.1234ABCD→fwectf{1234ABCD}
solution
「ウォッチドッグタイマが故障」に注目してインターネットで検索すると0x8badf00d
が出てきます
fwectf{8BADF00D}
最後に
fwectfをお楽しみ頂きありがとうございました!!
作問陣にとんでもない方が多く、僕の作成した問題の質がかなり低いものだったと反省しています...。
来年以降も機会があればぜひご参加下さい!
Discussion