net-nyan-cat

俺たちがインフラ野郎Aチーム

CSAW CTF 2020 - writeup

先週末にCSAW CTF 2020があり、またもやぼっちで出場してました。
2問解いて499位。普通に難しくてビビった。
以下、解いた問題とwriteup

crypto - Perfect Secrecy

255*255pxの二枚の画像が与えられた。 f:id:xrzhev:20200916200420p:plain モノクロだったのでとりあえず色を分けて合成してみる。 f:id:xrzhev:20200916200755p:plain

合成してみて、右下のbase64をデコードしたものがflagだと確信したが、
一部合成している部分が見にくいため、gimpで画像のパラメータを変更した。
赤色の画像の不透明度を下げ、青色の文字とかぶっている/いないを可視化させる。
f:id:xrzhev:20200916201058p:plain
これでbase64部分がかなり読みやすくなる。
f:id:xrzhev:20200916201237p:plain
あとは修正をしていき、最終的に下の画像になるよう調整した。
f:id:xrzhev:20200916201738p:plain
base64部分は、

ZmxhZ3swbjNfdDF
tM19QQGQhfQ==

となっており、デコードし、flagとなる。

$ echo -n "ZmxhZ3swbjNfdDFtM19QQGQhfQ==" | base64 -d
flag{0n3_t1m3_P@d!}

rev - baby_mult

謎の数列が入ったtxtファイルを渡された。
f:id:xrzhev:20200916202221p:plain rev問題なのでアセンブラ関係かと思い、とりあえずhexに直してみる。 f:id:xrzhev:20200916202424p:plain

ここで、リストの先頭に来ている 0x55, 0x48, 0x89, 0xe5は、

push %rbp (0x55)  
mov $rsp, %rbp (0x48, 0x89, 0xe5)  

と、アセンブラの処理であることに気づく。
そのため、hex形式のシェルコードからndisasmを用いてアセンブラに変換を行う。
(64bit形式で変換)

f:id:xrzhev:20200916203510p:plain

imulの挙動がわからなかったのでnasmで実行できるようELF形式にしてからgdbデバッグする戦法をとった。
プログラムをデバッグしていくと、RAXレジスタに少しづつflagが出力されていく。

f:id:xrzhev:20200916203906p:plain
f:id:xrzhev:20200916203925p:plain
f:id:xrzhev:20200916203945p:plain
f:id:xrzhev:20200916204002p:plain

flag{super_v4l1d_pr0gr4m}

おわりに

web問(ZWSPのやつ)で12時間溶かした。
絶対許さないマンとして次のCTFも頑張ります…