pwnable.kr のメモ【flag】

http://pwnable.kr の flag を解いたのでメモ

以下、問題文。とりあえずダウンロードしてみた。

Papa brought me a packed present! let's open it.

Download : http://pwnable.kr/bin/flag

This is reversing task. all you need is binary

ダウンロードしたファイルの種類を確認して、実行権限を与えて実行。

$ file flag
flag: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, stripped
$ ls -l 
$ chmod +x flag
$./flag
I will malloc() and strcpy the flag there. take it.

なんかメッセージがでた。試しに gdb で実行を確認してみようとするがうまくいかなかったので stringsコマンドで実行ファイルの中身をみたら以下のような文を発見した。どうやら UPX というソフトウェアで圧縮されているらしいので解凍する必要があるっぽい。

$Info: This file is packed with the UPX executable packer http://upx.sf.net $

解凍すると無事、gdb で実行を確認することができるようになった。

gdb-peda$ disas main

main のアセンブリコードを確認すると、以下のような行を発見。

0x0000000000401184 <+32>:   mov    rdx,QWORD PTR [rip+0x2c0ee5]        # 0x6c2070 <flag>

上記のアドレスにブレークポイントを指定して再び実行して rdx の中身を確認して終わり。

gdb-peda$ b *main+32
gdb-peda$ run
gdb-peda$ ni
gdb-peda$ x/s $rdx