SECCON Beginners CTF 2022 writeup

6月4日の14時から24時間開催されていたSECCON Beginners CTF 2022にWani Hackase で参戦して5位でした。 普段のreversing担当が不在だったので、reversingとcryptoを担当しました。 WinTLS [reversing, 102 solved] Windowsというだけで忌避していたこの手の問題に、久しぶりに挑戦しました。 .rdataを漁っていると香ばしい文字列(c4{f..., tfb%...)があったのでxrefで参照元を見に行きます。 2つのスレッドで文字列を処理していて、flagのインデックスに応じて2つの文字列に振り分けているようです。 操作は単純なので逆の操作をしてあげると、文字列を復元できます。 1t1 = b"c4{fAPu8#FHh2+0cyo8$SWJH3a8X" 2t2 = b"tfb%s$T9NvFyroLh@89a9yoC3rPy&3b}" 3 4flag = [] 5k1, k2 = 0, 0 6for i in range(len(t1+t2)): 7 if i % 3 == 0 or i % 5 == 0: 8 flag.append(t1[k1]) 9 k1 += 1 10 else: 11 flag.append(t2[k2]) 12 k2 += 1 13 14print(bytes(flag)) Flag: ctf4b{f%sAP$uT98Nv#FFHyrh2o+Lh0@8c9yoa98$ySoCW3rJPH3y&a83Xb} ところで、UndefinedFunctionがめちゃくちゃ見にくい…… Recursive [reversing, 127 solved] 再帰で文字列をぐちゃぐちゃにしてあります。 少しreversingをすると文字列長が書いてあるので、処理前の文字列が処理後にどこに配置されるかが分かれば、逆操作で元に戻せます。...

2022-06-05 · 5 min · 1064 words · Laika