CSAW CTF 2020 - writeup
先週末にCSAW CTF 2020があり、またもやぼっちで出場してました。
2問解いて499位。普通に難しくてビビった。
以下、解いた問題とwriteup
crypto - Perfect Secrecy
255*255pxの二枚の画像が与えられた。 モノクロだったのでとりあえず色を分けて合成してみる。
合成してみて、右下のbase64をデコードしたものがflagだと確信したが、
一部合成している部分が見にくいため、gimpで画像のパラメータを変更した。
赤色の画像の不透明度を下げ、青色の文字とかぶっている/いないを可視化させる。
これでbase64部分がかなり読みやすくなる。
あとは修正をしていき、最終的に下の画像になるよう調整した。
base64部分は、
ZmxhZ3swbjNfdDF tM19QQGQhfQ==
となっており、デコードし、flagとなる。
$ echo -n "ZmxhZ3swbjNfdDFtM19QQGQhfQ==" | base64 -d flag{0n3_t1m3_P@d!}
rev - baby_mult
謎の数列が入ったtxtファイルを渡された。
rev問題なのでアセンブラ関係かと思い、とりあえずhexに直してみる。
ここで、リストの先頭に来ている 0x55, 0x48, 0x89, 0xe5は、
push %rbp (0x55) mov $rsp, %rbp (0x48, 0x89, 0xe5)
と、アセンブラの処理であることに気づく。
そのため、hex形式のシェルコードからndisasmを用いてアセンブラに変換を行う。
(64bit形式で変換)
imulの挙動がわからなかったのでnasmで実行できるようELF形式にしてからgdbでデバッグする戦法をとった。
プログラムをデバッグしていくと、RAXレジスタに少しづつflagが出力されていく。
flag{super_v4l1d_pr0gr4m}
おわりに
web問(ZWSPのやつ)で12時間溶かした。
絶対許さないマンとして次のCTFも頑張ります…