picoCTF 2022 unpackme
コンテスト中に解けなかった問題の復習です。
問題
Can you get the flag? Reverse engineer this binary.
バイナリファイル(unpackme-upx)がダウンロードできる。
ヒント
What is UPX?
解法
まず、UPXとはなんぞやということなのですが、
みたいです。Ghidraで解析する前に、展開してあげたあげれば、良いらしいです。
https://ja.wikipedia.org/wiki/UPX
まずは、インストール方法は、単純で、aptでupxとやる。
$ apt -y install upx
これで、upxコマンドが使える。
ダウンロードしたファイルを、decompressするには、-dオプションを使う。
# upx -d unpackme-upx Ultimate Packer for eXecutables Copyright (C) 1996 - 2018 UPX 3.95 Markus Oberhumer, Laszlo Molnar & John Reiser Aug 26th 2018 File size Ratio Format Name -------------------- ------ ----------- ----------- 1002408 <- 379116 37.82% linux/amd64 unpackme-upx Unpacked 1 file.
これを、Bbbboatと同じように、Ghidraにかける。
で、kusuwada先生のアドバイス picoCTF2022 [Reverse Engineering] writeup - 好奇心の足跡 にしたがって、
Exportsの中の、main関数を見つける。
ここに、0xb83cb、つまり、754635 が見つけたい数値となる。
で、
# ./unpackme-upx What's my favorite number? 754635 picoCTF{up><_m3_f7w_5769b54e}
をして、(Ghidraの使い方がよくわからないとかいろいろあるけど、とりあえず)flagゲット!