CpawCTF Q21.[Reversing]reversing easy!

フラグを出す実行ファイルがあるのだが、プログラム(elfファイル)作成者が出力する関数を書き忘れてしまったらしい…
reverse100

rev100をダウンロードして実行権を与えて、とりあえず確認してみる。

$ chmod u+x rev100

$ file rev100 
rev100: ELF 32-bit LSB executable, 
Intel 80386, version 1 (SYSV), 
dynamically linked, interpreter /lib/ld-, 
for GNU/Linux 2.6.24, 
BuildID[sha1]=f94360edd84a940de2b74007d4289705601d618d, 
not stripped

$ strings rev100
/lib/ld-linux.so.2
libc.so.6
_IO_stdin_used
__stack_chk_fail
putchar
printf
__libc_start_main
__gmon_start__
GLIBC_2.4
GLIBC_2.0
PTRh
D$L1
D$Fcpawf
D$J{
D$ y
D$$a
D$(k
D$,i
D$0n
D$4i
D$8k
D$<u
D$@!
T$Le3
・・・

stringsの時点でフラグっぽいのが見えているが、もう少し見てみる。デバッガを起動してアセンブラを確認。

$ gdb rev100
(gdb) layout asm
・・・
0x80484b2 <main+21>     movl   $0x77617063,0x46(%esp)
0x80484ba <main+29>     movw   $0x7b,0x4a(%esp)
0x80484c1 <main+36>     movl   $0x79,0x20(%esp)
0x80484c9 <main+44>     movl   $0x61,0x24(%esp)
0x80484d1 <main+52>     movl   $0x6b,0x28(%esp)
0x80484d9 <main+60>     movl   $0x69,0x2c(%esp)
0x80484e1 <main+68>     movl   $0x6e,0x30(%esp)
0x80484e9 <main+76>     movl   $0x69,0x34(%esp)
0x80484f1 <main+84>     movl   $0x6b,0x38(%esp)
0x80484f9 <main+92>     movl   $0x75,0x3c(%esp)
0x8048501 <main+100>    movl   $0x21,0x40(%esp)
0x8048509 <main+108>    movw   $0xa7d,0x15(%esp)
・・・

上記のあたりがフラグの部分だと思われる。リトルエンディアンであることを注意して、文字列に変更するとフラグをゲットできる。

答え:cpaw{yakiniku!}

CpawCTF write-upまとめ

この記事が気に入ったらサポートをしてみませんか?