CSAW CTF'19 CTF Writeup
Contents
URL: https://ctf.csaw.io/challenges
とりあえず、Reversingの一番簡単なやつだけ解きました。
[Reversing]: BELEAF (50 points)
Challenge
tree sounds are best listened to by https://binary.ninja/demo or ghidra
Attachment:
- beleaf (64-bit ELF)
Solution
言われた通り、Ghidraでデコンパイルします。
|
|
|
|
上記の関数内で参照しているDAT_003014e0とDAT_00301020には、比較用のデータが入ってます。
こんな感じ。(抜粋)
DAT_003014e0 XREF[2]: FUN_001008a1:0010096b(*), FUN_001008a1:00100972(R) 003014e0 01 ?? 01h 003014e1 00 ?? 00h 003014e2 00 ?? 00h 003014e3 00 ?? 00h 003014e4 00 ?? 00h 003014e5 00 ?? 00h 003014e6 00 ?? 00h 003014e7 00 ?? 00h 003014e8 09 ?? 09h 003014e9 00 ?? 00h 003014ea 00 ?? 00h 003014eb 00 ?? 00h
入力文字列の長さチェックは0x21で、後は比較データにマッチすればOK。
ここからが解法です。
|
|
ほぼ、ghidraのコードのままですけど、文字のBrute Forceを追加してて、その際にハズレ文字だとposが範囲外になってSegmentation Faultになるので、posの範囲チェックも入れてます。
実行結果:
$ ./beleaf_solve.o flag{we_beleaf_in_your_re_future}
Flag: flag{we_beleaf_in_your_re_future}
Author CaptureAmerica @ CTF フラxxグゲット
LastMod 2019-09-16