SECCON Beginners CTF 2023 Writeup (ctf4b)

2023年6月3日(土)~4日(日)に開催されたSECCON Beginners CTF 2023のWriteupを書いていきます。
自分が解いた分野はReversingです。

Reversingの問題について

Reversingの問題は全部で5問ありました。

  • Half(beginner)
  • Three(easy)
  • Poker(medium)
  • Leak(medium)
  • Heaven(hard)

この中で自分が解けたのはPoker(medium)まででした。
続いて問題の解き方を書きます。

Half(begginer)

Halfの問題文は

バイナリファイルってなんのファイルなのか調べてみよう!
あとこのファイルってどうやって中身を見るんだろう...?

というものでした。
ファイルとしてはHalf.tar.gzが与えられています。

まずはtar.gzファイルを展開しましょう。

tar -zxvf Half.tar.gz

展開をして中身を確認すると、halfというファイルがありました。
これだけでは何のファイルかわからないため、fileコマンドで何のファイルか確認します。

file half

すると実行結果が

half: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=e2b1484a1db68e68d01130084882316fb34d86ad, for GNU/Linux 3.2.0, not stripped

と返ってきました。この結果からこのファイルが64ビットELFファイル形式の実行ファイルであることがわかりました。
実行してみてもいいのですが、revのbegginer問題なのでStringsコマンドでフラグがないか見てみます。

strings half

実行結果が

/lib64/ld-linux-x86-64.so.2
libc.so.6
strncmp
__isoc99_scanf
puts
printf
strlen
__cxa_finalize
strcmp
__libc_start_main
GLIBC_2.7
GLIBC_2.2.5
_ITM_deregisterTMCloneTable
__gmon_start__
_ITM_registerTMCloneTable
u+UH
[]A\A]A^A_
Enter the FLAG: 
%99s%*[^
Invalid FLAG
ctf4b{ge4_t0_kn0w_the
_bin4ry_fi1e_with_s4ring3}
Correct!
:*3$"
GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
crtstuff.c
deregister_tm_clones
__do_global_dtors_aux
completed.8061
__do_global_dtors_aux_fini_array_entry
frame_dummy
__frame_dummy_init_array_entry
main.c
__FRAME_END__
__init_array_end
_DYNAMIC
__init_array_start
__GNU_EH_FRAME_HDR
_GLOBAL_OFFSET_TABLE_
__libc_csu_fini
strncmp@@GLIBC_2.2.5
_ITM_deregisterTMCloneTable
puts@@GLIBC_2.2.5
_edata
strlen@@GLIBC_2.2.5
printf@@GLIBC_2.2.5
__libc_start_main@@GLIBC_2.2.5
__data_start
strcmp@@GLIBC_2.2.5
__gmon_start__
__dso_handle
_IO_stdin_used
__libc_csu_init
__bss_start
main
__isoc99_scanf@@GLIBC_2.7
__TMC_END__
_ITM_registerTMCloneTable
__cxa_finalize@@GLIBC_2.2.5
.symtab
.strtab
.shstrtab
.interp
.note.gnu.property
.note.gnu.build-id
.note.ABI-tag
.gnu.hash
.dynsym
.dynstr
.gnu.version
.gnu.version_r
.rela.dyn
.rela.plt
.init
.plt.got
.plt.sec
.text
.fini
.rodata
.eh_frame_hdr
.eh_frame
.init_array
.fini_array
.dynamic
.data
.bss
.comment

となり、ctf4b{ge4_t0_kn0w_the_bin4ry_fi1e_with_s4ring3}を合わせるとフラグの形になりそうです。

ctf4b{ge4_t0_kn0w_the_bin4ry_fi1e_with_s4ring3}

Three(easy)

次はThreeです。問題文は以下の通りです。

このファイル、中身をちょっと見ただけではフラグは分からないみたい!
バイナリファイルを解析する、専門のツールとか必要かな?

ファイルはThree.tar.gzが与えられています。

まずは先程と同じでtar.gzファイルを展開して、fileコマンドで何のファイルか確認します。

three: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=5f0a7f4053ff33a4a013bbe5c58ea4dc2973ed54, for GNU/Linux 3.2.0, not stripped

これも先程と同じで実行ファイルのようです。今回はとりあえず実行してみましょう。
実行してみると

Enter the FLAG:

のようにフラグの入力を求められるだけでした。このことから入力で何かするわけでなく、解析するファイルの中にフラグがあるということが推測できます。
一応stringsコマンドで可読できる文字列を見てみましょう。

/lib64/ld-linux-x86-64.so.2
libc.so.6
__isoc99_scanf
puts
printf
strlen
__cxa_finalize
__libc_start_main
GLIBC_2.7
GLIBC_2.2.5
_ITM_deregisterTMCloneTable
__gmon_start__
_ITM_registerTMCloneTable
u+UH
VUUUH
VUUUH
VUUUH
VUUUH
VUUUH
[]A\A]A^A_
Invalid FLAG
Correct!
Enter the FLAG: 
%49s
:*3$"
GCC: (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
crtstuff.c
deregister_tm_clones
__do_global_dtors_aux
completed.8061
__do_global_dtors_aux_fini_array_entry
frame_dummy
__frame_dummy_init_array_entry
main.c
__FRAME_END__
__init_array_end
_DYNAMIC
__init_array_start
__GNU_EH_FRAME_HDR
_GLOBAL_OFFSET_TABLE_
__libc_csu_fini
_ITM_deregisterTMCloneTable
puts@@GLIBC_2.2.5
flag_2
validate_flag
flag_0
_edata
strlen@@GLIBC_2.2.5
printf@@GLIBC_2.2.5
__libc_start_main@@GLIBC_2.2.5
__data_start
__gmon_start__
__dso_handle
_IO_stdin_used
__libc_csu_init
flag_1
__bss_start
main
__isoc99_scanf@@GLIBC_2.7
__TMC_END__
_ITM_registerTMCloneTable
__cxa_finalize@@GLIBC_2.2.5
.symtab
.strtab
.shstrtab
.interp
.note.gnu.property
.note.gnu.build-id
.note.ABI-tag
.gnu.hash
.dynsym
.dynstr
.gnu.version
.gnu.version_r
.rela.dyn
.rela.plt
.init
.plt.got
.plt.sec
.text
.fini
.rodata
.eh_frame_hdr
.eh_frame
.init_array
.fini_array
.dynamic
.data
.bss
.comment

次はhexdumpコマンドで実行ファイルのバイナリと16進ダンプしたものを見てみることにします。

hexdump -C three

実行結果が

00000000  7f 45 4c 46 02 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  03 00 3e 00 01 00 00 00  c0 10 00 00 00 00 00 00  |..>.............|
00000020  40 00 00 00 00 00 00 00  88 3a 00 00 00 00 00 00  |@........:......|
00000030  00 00 00 00 40 00 38 00  0d 00 40 00 1f 00 1e 00  |....@.8...@.....|
00000040  06 00 00 00 04 00 00 00  40 00 00 00 00 00 00 00  |........@.......|
00000050  40 00 00 00 00 00 00 00  40 00 00 00 00 00 00 00  |@.......@.......|
00000060  d8 02 00 00 00 00 00 00  d8 02 00 00 00 00 00 00  |................|
00000070  08 00 00 00 00 00 00 00  03 00 00 00 04 00 00 00  |................|
00000080  18 03 00 00 00 00 00 00  18 03 00 00 00 00 00 00  |................|
00000090  18 03 00 00 00 00 00 00  1c 00 00 00 00 00 00 00  |................|
000000a0  1c 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
000000b0  01 00 00 00 04 00 00 00  00 00 00 00 00 00 00 00  |................|
000000c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000000d0  c8 06 00 00 00 00 00 00  c8 06 00 00 00 00 00 00  |................|
000000e0  00 10 00 00 00 00 00 00  01 00 00 00 05 00 00 00  |................|
000000f0  00 10 00 00 00 00 00 00  00 10 00 00 00 00 00 00  |................|
00000100  00 10 00 00 00 00 00 00  f5 03 00 00 00 00 00 00  |................|
00000110  f5 03 00 00 00 00 00 00  00 10 00 00 00 00 00 00  |................|
00000120  01 00 00 00 04 00 00 00  00 20 00 00 00 00 00 00  |......... ......|
00000130  00 20 00 00 00 00 00 00  00 20 00 00 00 00 00 00  |. ....... ......|
00000140  a0 02 00 00 00 00 00 00  a0 02 00 00 00 00 00 00  |................|
00000150  00 10 00 00 00 00 00 00  01 00 00 00 06 00 00 00  |................|
00000160  a0 2d 00 00 00 00 00 00  a0 3d 00 00 00 00 00 00  |.-.......=......|
00000170  a0 3d 00 00 00 00 00 00  70 02 00 00 00 00 00 00  |.=......p.......|
00000180  78 02 00 00 00 00 00 00  00 10 00 00 00 00 00 00  |x...............|
00000190  02 00 00 00 06 00 00 00  b0 2d 00 00 00 00 00 00  |.........-......|
000001a0  b0 3d 00 00 00 00 00 00  b0 3d 00 00 00 00 00 00  |.=.......=......|
000001b0  f0 01 00 00 00 00 00 00  f0 01 00 00 00 00 00 00  |................|
000001c0  08 00 00 00 00 00 00 00  04 00 00 00 04 00 00 00  |................|
000001d0  38 03 00 00 00 00 00 00  38 03 00 00 00 00 00 00  |8.......8.......|
000001e0  38 03 00 00 00 00 00 00  20 00 00 00 00 00 00 00  |8....... .......|
000001f0  20 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  | ...............|
00000200  04 00 00 00 04 00 00 00  58 03 00 00 00 00 00 00  |........X.......|
00000210  58 03 00 00 00 00 00 00  58 03 00 00 00 00 00 00  |X.......X.......|
00000220  44 00 00 00 00 00 00 00  44 00 00 00 00 00 00 00  |D.......D.......|
00000230  04 00 00 00 00 00 00 00  53 e5 74 64 04 00 00 00  |........S.td....|
00000240  38 03 00 00 00 00 00 00  38 03 00 00 00 00 00 00  |8.......8.......|
00000250  38 03 00 00 00 00 00 00  20 00 00 00 00 00 00 00  |8....... .......|
00000260  20 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  | ...............|
00000270  50 e5 74 64 04 00 00 00  2c 21 00 00 00 00 00 00  |P.td....,!......|
00000280  2c 21 00 00 00 00 00 00  2c 21 00 00 00 00 00 00  |,!......,!......|
00000290  4c 00 00 00 00 00 00 00  4c 00 00 00 00 00 00 00  |L.......L.......|
000002a0  04 00 00 00 00 00 00 00  51 e5 74 64 06 00 00 00  |........Q.td....|
000002b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000002d0  00 00 00 00 00 00 00 00  10 00 00 00 00 00 00 00  |................|
000002e0  52 e5 74 64 04 00 00 00  a0 2d 00 00 00 00 00 00  |R.td.....-......|
000002f0  a0 3d 00 00 00 00 00 00  a0 3d 00 00 00 00 00 00  |.=.......=......|
00000300  60 02 00 00 00 00 00 00  60 02 00 00 00 00 00 00  |`.......`.......|
00000310  01 00 00 00 00 00 00 00  2f 6c 69 62 36 34 2f 6c  |......../lib64/l|
00000320  64 2d 6c 69 6e 75 78 2d  78 38 36 2d 36 34 2e 73  |d-linux-x86-64.s|
00000330  6f 2e 32 00 00 00 00 00  04 00 00 00 10 00 00 00  |o.2.............|
00000340  05 00 00 00 47 4e 55 00  02 00 00 c0 04 00 00 00  |....GNU.........|
00000350  03 00 00 00 00 00 00 00  04 00 00 00 14 00 00 00  |................|
00000360  03 00 00 00 47 4e 55 00  5f 0a 7f 40 53 ff 33 a4  |....GNU._..@S.3.|
00000370  a0 13 bb e5 c5 8e a4 dc  29 73 ed 54 04 00 00 00  |........)s.T....|
00000380  10 00 00 00 01 00 00 00  47 4e 55 00 00 00 00 00  |........GNU.....|
00000390  03 00 00 00 02 00 00 00  00 00 00 00 00 00 00 00  |................|
000003a0  02 00 00 00 09 00 00 00  01 00 00 00 06 00 00 00  |................|
000003b0  00 00 81 00 00 00 00 00  09 00 00 00 00 00 00 00  |................|
000003c0  d1 65 ce 6d 00 00 00 00  00 00 00 00 00 00 00 00  |.e.m............|
000003d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000003e0  64 00 00 00 20 00 00 00  00 00 00 00 00 00 00 00  |d... ...........|
000003f0  00 00 00 00 00 00 00 00  1a 00 00 00 12 00 00 00  |................|
00000400  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000410  26 00 00 00 12 00 00 00  00 00 00 00 00 00 00 00  |&...............|
00000420  00 00 00 00 00 00 00 00  1f 00 00 00 12 00 00 00  |................|
00000430  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000440  3c 00 00 00 12 00 00 00  00 00 00 00 00 00 00 00  |<...............|
00000450  00 00 00 00 00 00 00 00  80 00 00 00 20 00 00 00  |............ ...|
00000460  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000470  0b 00 00 00 12 00 00 00  00 00 00 00 00 00 00 00  |................|
00000480  00 00 00 00 00 00 00 00  8f 00 00 00 20 00 00 00  |............ ...|
00000490  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000004a0  2d 00 00 00 22 00 00 00  00 00 00 00 00 00 00 00  |-..."...........|
000004b0  00 00 00 00 00 00 00 00  00 6c 69 62 63 2e 73 6f  |.........libc.so|
000004c0  2e 36 00 5f 5f 69 73 6f  63 39 39 5f 73 63 61 6e  |.6.__isoc99_scan|
000004d0  66 00 70 75 74 73 00 70  72 69 6e 74 66 00 73 74  |f.puts.printf.st|
000004e0  72 6c 65 6e 00 5f 5f 63  78 61 5f 66 69 6e 61 6c  |rlen.__cxa_final|
000004f0  69 7a 65 00 5f 5f 6c 69  62 63 5f 73 74 61 72 74  |ize.__libc_start|
00000500  5f 6d 61 69 6e 00 47 4c  49 42 43 5f 32 2e 37 00  |_main.GLIBC_2.7.|
00000510  47 4c 49 42 43 5f 32 2e  32 2e 35 00 5f 49 54 4d  |GLIBC_2.2.5._ITM|
00000520  5f 64 65 72 65 67 69 73  74 65 72 54 4d 43 6c 6f  |_deregisterTMClo|
00000530  6e 65 54 61 62 6c 65 00  5f 5f 67 6d 6f 6e 5f 73  |neTable.__gmon_s|
00000540  74 61 72 74 5f 5f 00 5f  49 54 4d 5f 72 65 67 69  |tart__._ITM_regi|
00000550  73 74 65 72 54 4d 43 6c  6f 6e 65 54 61 62 6c 65  |sterTMCloneTable|
00000560  00 00 00 00 00 00 02 00  02 00 02 00 02 00 00 00  |................|
00000570  03 00 00 00 02 00 00 00  01 00 02 00 01 00 00 00  |................|
00000580  10 00 00 00 00 00 00 00  17 69 69 0d 00 00 03 00  |.........ii.....|
00000590  4e 00 00 00 10 00 00 00  75 1a 69 09 00 00 02 00  |N.......u.i.....|
000005a0  58 00 00 00 00 00 00 00  a0 3d 00 00 00 00 00 00  |X........=......|
000005b0  08 00 00 00 00 00 00 00  a0 11 00 00 00 00 00 00  |................|
000005c0  a8 3d 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |.=..............|
000005d0  60 11 00 00 00 00 00 00  08 40 00 00 00 00 00 00  |`........@......|
000005e0  08 00 00 00 00 00 00 00  08 40 00 00 00 00 00 00  |.........@......|
000005f0  d8 3f 00 00 00 00 00 00  06 00 00 00 01 00 00 00  |.?..............|
00000600  00 00 00 00 00 00 00 00  e0 3f 00 00 00 00 00 00  |.........?......|
00000610  06 00 00 00 05 00 00 00  00 00 00 00 00 00 00 00  |................|
00000620  e8 3f 00 00 00 00 00 00  06 00 00 00 06 00 00 00  |.?..............|
00000630  00 00 00 00 00 00 00 00  f0 3f 00 00 00 00 00 00  |.........?......|
00000640  06 00 00 00 08 00 00 00  00 00 00 00 00 00 00 00  |................|
00000650  f8 3f 00 00 00 00 00 00  06 00 00 00 09 00 00 00  |.?..............|
00000660  00 00 00 00 00 00 00 00  b8 3f 00 00 00 00 00 00  |.........?......|
00000670  07 00 00 00 02 00 00 00  00 00 00 00 00 00 00 00  |................|
00000680  c0 3f 00 00 00 00 00 00  07 00 00 00 03 00 00 00  |.?..............|
00000690  00 00 00 00 00 00 00 00  c8 3f 00 00 00 00 00 00  |.........?......|
000006a0  07 00 00 00 04 00 00 00  00 00 00 00 00 00 00 00  |................|
000006b0  d0 3f 00 00 00 00 00 00  07 00 00 00 07 00 00 00  |.?..............|
000006c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00001000  f3 0f 1e fa 48 83 ec 08  48 8b 05 d9 2f 00 00 48  |....H...H.../..H|
00001010  85 c0 74 02 ff d0 48 83  c4 08 c3 00 00 00 00 00  |..t...H.........|
00001020  ff 35 82 2f 00 00 f2 ff  25 83 2f 00 00 0f 1f 00  |.5./....%./.....|
00001030  f3 0f 1e fa 68 00 00 00  00 f2 e9 e1 ff ff ff 90  |....h...........|
00001040  f3 0f 1e fa 68 01 00 00  00 f2 e9 d1 ff ff ff 90  |....h...........|
00001050  f3 0f 1e fa 68 02 00 00  00 f2 e9 c1 ff ff ff 90  |....h...........|
00001060  f3 0f 1e fa 68 03 00 00  00 f2 e9 b1 ff ff ff 90  |....h...........|
00001070  f3 0f 1e fa f2 ff 25 7d  2f 00 00 0f 1f 44 00 00  |......%}/....D..|
00001080  f3 0f 1e fa f2 ff 25 2d  2f 00 00 0f 1f 44 00 00  |......%-/....D..|
00001090  f3 0f 1e fa f2 ff 25 25  2f 00 00 0f 1f 44 00 00  |......%%/....D..|
000010a0  f3 0f 1e fa f2 ff 25 1d  2f 00 00 0f 1f 44 00 00  |......%./....D..|
000010b0  f3 0f 1e fa f2 ff 25 15  2f 00 00 0f 1f 44 00 00  |......%./....D..|
000010c0  f3 0f 1e fa 31 ed 49 89  d1 5e 48 89 e2 48 83 e4  |....1.I..^H..H..|
000010d0  f0 50 54 4c 8d 05 06 03  00 00 48 8d 0d 8f 02 00  |.PTL......H.....|
000010e0  00 48 8d 3d 39 02 00 00  ff 15 f2 2e 00 00 f4 90  |.H.=9...........|
000010f0  48 8d 3d 19 2f 00 00 48  8d 05 12 2f 00 00 48 39  |H.=./..H.../..H9|
00001100  f8 74 15 48 8b 05 ce 2e  00 00 48 85 c0 74 09 ff  |.t.H......H..t..|
00001110  e0 0f 1f 80 00 00 00 00  c3 0f 1f 80 00 00 00 00  |................|
00001120  48 8d 3d e9 2e 00 00 48  8d 35 e2 2e 00 00 48 29  |H.=....H.5....H)|
00001130  fe 48 89 f0 48 c1 ee 3f  48 c1 f8 03 48 01 c6 48  |.H..H..?H...H..H|
00001140  d1 fe 74 14 48 8b 05 a5  2e 00 00 48 85 c0 74 08  |..t.H......H..t.|
00001150  ff e0 66 0f 1f 44 00 00  c3 0f 1f 80 00 00 00 00  |..f..D..........|
00001160  f3 0f 1e fa 80 3d a5 2e  00 00 00 75 2b 55 48 83  |.....=.....u+UH.|
00001170  3d 82 2e 00 00 00 48 89  e5 74 0c 48 8b 3d 86 2e  |=.....H..t.H.=..|
00001180  00 00 e8 e9 fe ff ff e8  64 ff ff ff c6 05 7d 2e  |........d.....}.|
00001190  00 00 01 5d c3 0f 1f 00  c3 0f 1f 80 00 00 00 00  |...]............|
000011a0  f3 0f 1e fa e9 77 ff ff  ff f3 0f 1e fa 55 48 89  |.....w.......UH.|
000011b0  e5 48 83 ec 20 48 89 7d  e8 48 8b 45 e8 48 89 c7  |.H.. H.}.H.E.H..|
000011c0  e8 cb fe ff ff 48 83 f8  31 74 16 48 8d 3d 2e 0f  |.....H..1t.H.=..|
000011d0  00 00 e8 a9 fe ff ff b8  01 00 00 00 e9 3e 01 00  |.............>..|
000011e0  00 c7 45 fc 00 00 00 00  e9 17 01 00 00 8b 4d fc  |..E...........M.|
000011f0  48 63 c1 48 69 c0 56 55  55 55 48 c1 e8 20 48 89  |Hc.Hi.VUUUH.. H.|
00001200  c2 89 c8 c1 f8 1f 89 d6  29 c6 89 f0 89 c2 01 d2  |........).......|
00001210  01 c2 89 c8 29 d0 85 c0  75 33 8b 45 fc 48 63 d0  |....)...u3.E.Hc.|
00001220  48 69 d2 56 55 55 55 48  c1 ea 20 c1 f8 1f 89 d6  |Hi.VUUUH.. .....|
00001230  29 c6 89 f0 48 98 48 8d  14 85 00 00 00 00 48 8d  |)...H.H.......H.|
00001240  05 db 0d 00 00 8b 04 02  e9 88 00 00 00 8b 4d fc  |..............M.|
00001250  48 63 c1 48 69 c0 56 55  55 55 48 c1 e8 20 48 89  |Hc.Hi.VUUUH.. H.|
00001260  c2 89 c8 c1 f8 1f 29 c2  89 d0 01 c0 01 d0 29 c1  |......).......).|
00001270  89 ca 83 fa 01 75 30 8b  45 fc 48 63 d0 48 69 d2  |.....u0.E.Hc.Hi.|
00001280  56 55 55 55 48 c1 ea 20  c1 f8 1f 89 d7 29 c7 89  |VUUUH.. .....)..|
00001290  f8 48 98 48 8d 14 85 00  00 00 00 48 8d 05 de 0d  |.H.H.......H....|
000012a0  00 00 8b 04 02 eb 2e 8b  45 fc 48 63 d0 48 69 d2  |........E.Hc.Hi.|
000012b0  56 55 55 55 48 c1 ea 20  c1 f8 1f 89 d6 29 c6 89  |VUUUH.. .....)..|
000012c0  f0 48 98 48 8d 14 85 00  00 00 00 48 8d 05 ee 0d  |.H.H.......H....|
000012d0  00 00 8b 04 02 88 45 fb  8b 45 fc 48 63 d0 48 8b  |......E..E.Hc.H.|
000012e0  45 e8 48 01 d0 0f b6 00  38 45 fb 74 13 48 8d 3d  |E.H.....8E.t.H.=|
000012f0  0c 0e 00 00 e8 87 fd ff  ff b8 01 00 00 00 eb 1f  |................|
00001300  83 45 fc 01 83 7d fc 30  0f 8e df fe ff ff 48 8d  |.E...}.0......H.|
00001310  3d f8 0d 00 00 e8 66 fd  ff ff b8 00 00 00 00 c9  |=.....f.........|
00001320  c3 f3 0f 1e fa 55 48 89  e5 48 83 ec 40 48 8d 3d  |.....UH..H..@H.=|
00001330  e2 0d 00 00 b8 00 00 00  00 e8 62 fd ff ff 48 8d  |..........b...H.|
00001340  45 c0 48 89 c6 48 8d 3d  db 0d 00 00 b8 00 00 00  |E.H..H.=........|
00001350  00 e8 5a fd ff ff 48 8d  45 c0 48 89 c7 e8 47 fe  |..Z...H.E.H...G.|
00001360  ff ff c9 c3 66 2e 0f 1f  84 00 00 00 00 00 66 90  |....f.........f.|
00001370  f3 0f 1e fa 41 57 4c 8d  3d 23 2a 00 00 41 56 49  |....AWL.=#*..AVI|
00001380  89 d6 41 55 49 89 f5 41  54 41 89 fc 55 48 8d 2d  |..AUI..ATA..UH.-|
00001390  14 2a 00 00 53 4c 29 fd  48 83 ec 08 e8 5f fc ff  |.*..SL).H...._..|
000013a0  ff 48 c1 fd 03 74 1f 31  db 0f 1f 80 00 00 00 00  |.H...t.1........|
000013b0  4c 89 f2 4c 89 ee 44 89  e7 41 ff 14 df 48 83 c3  |L..L..D..A...H..|
000013c0  01 48 39 dd 75 ea 48 83  c4 08 5b 5d 41 5c 41 5d  |.H9.u.H...[]A\A]|
000013d0  41 5e 41 5f c3 66 66 2e  0f 1f 84 00 00 00 00 00  |A^A_.ff.........|
000013e0  f3 0f 1e fa c3 00 00 00  f3 0f 1e fa 48 83 ec 08  |............H...|
000013f0  48 83 c4 08 c3 00 00 00  00 00 00 00 00 00 00 00  |H...............|
00001400  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00002000  01 00 02 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00002010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00002020  63 00 00 00 34 00 00 00  63 00 00 00 5f 00 00 00  |c...4...c..._...|
00002030  75 00 00 00 62 00 00 00  5f 00 00 00 5f 00 00 00  |u...b..._..._...|
00002040  64 00 00 00 74 00 00 00  5f 00 00 00 72 00 00 00  |d...t..._...r...|
00002050  5f 00 00 00 31 00 00 00  5f 00 00 00 34 00 00 00  |_...1..._...4...|
00002060  7d 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |}...............|
00002070  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00002080  74 00 00 00 62 00 00 00  34 00 00 00 79 00 00 00  |t...b...4...y...|
00002090  5f 00 00 00 31 00 00 00  74 00 00 00 75 00 00 00  |_...1...t...u...|
000020a0  30 00 00 00 34 00 00 00  74 00 00 00 65 00 00 00  |0...4...t...e...|
000020b0  73 00 00 00 69 00 00 00  66 00 00 00 67 00 00 00  |s...i...f...g...|
000020c0  66 00 00 00 7b 00 00 00  6e 00 00 00 30 00 00 00  |f...{...n...0...|
000020d0  61 00 00 00 65 00 00 00  30 00 00 00 6e 00 00 00  |a...e...0...n...|
000020e0  5f 00 00 00 65 00 00 00  34 00 00 00 65 00 00 00  |_...e...4...e...|
000020f0  70 00 00 00 74 00 00 00  31 00 00 00 33 00 00 00  |p...t...1...3...|
00002100  49 6e 76 61 6c 69 64 20  46 4c 41 47 00 43 6f 72  |Invalid FLAG.Cor|
00002110  72 65 63 74 21 00 45 6e  74 65 72 20 74 68 65 20  |rect!.Enter the |
00002120  46 4c 41 47 3a 20 00 25  34 39 73 00 01 1b 03 3b  |FLAG: .%49s....;|
00002130  48 00 00 00 08 00 00 00  f4 ee ff ff 7c 00 00 00  |H...........|...|
00002140  44 ef ff ff a4 00 00 00  54 ef ff ff bc 00 00 00  |D.......T.......|
00002150  94 ef ff ff 64 00 00 00  7d f0 ff ff d4 00 00 00  |....d...}.......|
00002160  f5 f1 ff ff f4 00 00 00  44 f2 ff ff 14 01 00 00  |........D.......|
00002170  b4 f2 ff ff 5c 01 00 00  14 00 00 00 00 00 00 00  |....\...........|
00002180  01 7a 52 00 01 78 10 01  1b 0c 07 08 90 01 00 00  |.zR..x..........|
00002190  14 00 00 00 1c 00 00 00  28 ef ff ff 2f 00 00 00  |........(.../...|
000021a0  00 44 07 10 00 00 00 00  24 00 00 00 34 00 00 00  |.D......$...4...|
000021b0  70 ee ff ff 50 00 00 00  00 0e 10 46 0e 18 4a 0f  |p...P......F..J.|
000021c0  0b 77 08 80 00 3f 1a 3a  2a 33 24 22 00 00 00 00  |.w...?.:*3$"....|
000021d0  14 00 00 00 5c 00 00 00  98 ee ff ff 10 00 00 00  |....\...........|
000021e0  00 00 00 00 00 00 00 00  14 00 00 00 74 00 00 00  |............t...|
000021f0  90 ee ff ff 40 00 00 00  00 00 00 00 00 00 00 00  |....@...........|
00002200  1c 00 00 00 8c 00 00 00  a1 ef ff ff 78 01 00 00  |............x...|
00002210  00 45 0e 10 86 02 43 0d  06 03 6f 01 0c 07 08 00  |.E....C...o.....|
00002220  1c 00 00 00 ac 00 00 00  f9 f0 ff ff 43 00 00 00  |............C...|
00002230  00 45 0e 10 86 02 43 0d  06 7a 0c 07 08 00 00 00  |.E....C..z......|
00002240  44 00 00 00 cc 00 00 00  28 f1 ff ff 65 00 00 00  |D.......(...e...|
00002250  00 46 0e 10 8f 02 49 0e  18 8e 03 45 0e 20 8d 04  |.F....I....E. ..|
00002260  45 0e 28 8c 05 44 0e 30  86 06 48 0e 38 83 07 47  |E.(..D.0..H.8..G|
00002270  0e 40 6e 0e 38 41 0e 30  41 0e 28 42 0e 20 42 0e  |.@n.8A.0A.(B. B.|
00002280  18 42 0e 10 42 0e 08 00  10 00 00 00 14 01 00 00  |.B..B...........|
00002290  50 f1 ff ff 05 00 00 00  00 00 00 00 00 00 00 00  |P...............|
000022a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00002da0  a0 11 00 00 00 00 00 00  60 11 00 00 00 00 00 00  |........`.......|
00002db0  01 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00002dc0  0c 00 00 00 00 00 00 00  00 10 00 00 00 00 00 00  |................|
00002dd0  0d 00 00 00 00 00 00 00  e8 13 00 00 00 00 00 00  |................|
00002de0  19 00 00 00 00 00 00 00  a0 3d 00 00 00 00 00 00  |.........=......|
00002df0  1b 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00002e00  1a 00 00 00 00 00 00 00  a8 3d 00 00 00 00 00 00  |.........=......|
00002e10  1c 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00002e20  f5 fe ff 6f 00 00 00 00  a0 03 00 00 00 00 00 00  |...o............|
00002e30  05 00 00 00 00 00 00 00  b8 04 00 00 00 00 00 00  |................|
00002e40  06 00 00 00 00 00 00 00  c8 03 00 00 00 00 00 00  |................|
00002e50  0a 00 00 00 00 00 00 00  a9 00 00 00 00 00 00 00  |................|
00002e60  0b 00 00 00 00 00 00 00  18 00 00 00 00 00 00 00  |................|
00002e70  15 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00002e80  03 00 00 00 00 00 00 00  a0 3f 00 00 00 00 00 00  |.........?......|
00002e90  02 00 00 00 00 00 00 00  60 00 00 00 00 00 00 00  |........`.......|
00002ea0  14 00 00 00 00 00 00 00  07 00 00 00 00 00 00 00  |................|
00002eb0  17 00 00 00 00 00 00 00  68 06 00 00 00 00 00 00  |........h.......|
00002ec0  07 00 00 00 00 00 00 00  a8 05 00 00 00 00 00 00  |................|
00002ed0  08 00 00 00 00 00 00 00  c0 00 00 00 00 00 00 00  |................|
00002ee0  09 00 00 00 00 00 00 00  18 00 00 00 00 00 00 00  |................|
00002ef0  1e 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00002f00  fb ff ff 6f 00 00 00 00  01 00 00 08 00 00 00 00  |...o............|
00002f10  fe ff ff 6f 00 00 00 00  78 05 00 00 00 00 00 00  |...o....x.......|
00002f20  ff ff ff 6f 00 00 00 00  01 00 00 00 00 00 00 00  |...o............|
00002f30  f0 ff ff 6f 00 00 00 00  62 05 00 00 00 00 00 00  |...o....b.......|
00002f40  f9 ff ff 6f 00 00 00 00  03 00 00 00 00 00 00 00  |...o............|
00002f50  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00002fa0  b0 3d 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.=..............|
00002fb0  00 00 00 00 00 00 00 00  30 10 00 00 00 00 00 00  |........0.......|
00002fc0  40 10 00 00 00 00 00 00  50 10 00 00 00 00 00 00  |@.......P.......|
00002fd0  60 10 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |`...............|
00002fe0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00003000  00 00 00 00 00 00 00 00  08 40 00 00 00 00 00 00  |.........@......|
00003010  47 43 43 3a 20 28 55 62  75 6e 74 75 20 39 2e 34  |GCC: (Ubuntu 9.4|
00003020  2e 30 2d 31 75 62 75 6e  74 75 31 7e 32 30 2e 30  |.0-1ubuntu1~20.0|
00003030  34 2e 31 29 20 39 2e 34  2e 30 00 00 00 00 00 00  |4.1) 9.4.0......|
00003040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003050  00 00 00 00 00 00 00 00  00 00 00 00 03 00 01 00  |................|
00003060  18 03 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003070  00 00 00 00 03 00 02 00  38 03 00 00 00 00 00 00  |........8.......|
00003080  00 00 00 00 00 00 00 00  00 00 00 00 03 00 03 00  |................|
00003090  58 03 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |X...............|
000030a0  00 00 00 00 03 00 04 00  7c 03 00 00 00 00 00 00  |........|.......|
000030b0  00 00 00 00 00 00 00 00  00 00 00 00 03 00 05 00  |................|
000030c0  a0 03 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000030d0  00 00 00 00 03 00 06 00  c8 03 00 00 00 00 00 00  |................|
000030e0  00 00 00 00 00 00 00 00  00 00 00 00 03 00 07 00  |................|
000030f0  b8 04 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003100  00 00 00 00 03 00 08 00  62 05 00 00 00 00 00 00  |........b.......|
00003110  00 00 00 00 00 00 00 00  00 00 00 00 03 00 09 00  |................|
00003120  78 05 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |x...............|
00003130  00 00 00 00 03 00 0a 00  a8 05 00 00 00 00 00 00  |................|
00003140  00 00 00 00 00 00 00 00  00 00 00 00 03 00 0b 00  |................|
00003150  68 06 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |h...............|
00003160  00 00 00 00 03 00 0c 00  00 10 00 00 00 00 00 00  |................|
00003170  00 00 00 00 00 00 00 00  00 00 00 00 03 00 0d 00  |................|
00003180  20 10 00 00 00 00 00 00  00 00 00 00 00 00 00 00  | ...............|
00003190  00 00 00 00 03 00 0e 00  70 10 00 00 00 00 00 00  |........p.......|
000031a0  00 00 00 00 00 00 00 00  00 00 00 00 03 00 0f 00  |................|
000031b0  80 10 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000031c0  00 00 00 00 03 00 10 00  c0 10 00 00 00 00 00 00  |................|
000031d0  00 00 00 00 00 00 00 00  00 00 00 00 03 00 11 00  |................|
000031e0  e8 13 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000031f0  00 00 00 00 03 00 12 00  00 20 00 00 00 00 00 00  |......... ......|
00003200  00 00 00 00 00 00 00 00  00 00 00 00 03 00 13 00  |................|
00003210  2c 21 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |,!..............|
00003220  00 00 00 00 03 00 14 00  78 21 00 00 00 00 00 00  |........x!......|
00003230  00 00 00 00 00 00 00 00  00 00 00 00 03 00 15 00  |................|
00003240  a0 3d 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.=..............|
00003250  00 00 00 00 03 00 16 00  a8 3d 00 00 00 00 00 00  |.........=......|
00003260  00 00 00 00 00 00 00 00  00 00 00 00 03 00 17 00  |................|
00003270  b0 3d 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.=..............|
00003280  00 00 00 00 03 00 18 00  a0 3f 00 00 00 00 00 00  |.........?......|
00003290  00 00 00 00 00 00 00 00  00 00 00 00 03 00 19 00  |................|
000032a0  00 40 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.@..............|
000032b0  00 00 00 00 03 00 1a 00  10 40 00 00 00 00 00 00  |.........@......|
000032c0  00 00 00 00 00 00 00 00  00 00 00 00 03 00 1b 00  |................|
000032d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000032e0  01 00 00 00 04 00 f1 ff  00 00 00 00 00 00 00 00  |................|
000032f0  00 00 00 00 00 00 00 00  0c 00 00 00 02 00 10 00  |................|
00003300  f0 10 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003310  0e 00 00 00 02 00 10 00  20 11 00 00 00 00 00 00  |........ .......|
00003320  00 00 00 00 00 00 00 00  21 00 00 00 02 00 10 00  |........!.......|
00003330  60 11 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |`...............|
00003340  37 00 00 00 01 00 1a 00  10 40 00 00 00 00 00 00  |7........@......|
00003350  01 00 00 00 00 00 00 00  46 00 00 00 01 00 16 00  |........F.......|
00003360  a8 3d 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.=..............|
00003370  6d 00 00 00 02 00 10 00  a0 11 00 00 00 00 00 00  |m...............|
00003380  00 00 00 00 00 00 00 00  79 00 00 00 01 00 15 00  |........y.......|
00003390  a0 3d 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.=..............|
000033a0  98 00 00 00 04 00 f1 ff  00 00 00 00 00 00 00 00  |................|
000033b0  00 00 00 00 00 00 00 00  01 00 00 00 04 00 f1 ff  |................|
000033c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000033d0  9f 00 00 00 01 00 14 00  9c 22 00 00 00 00 00 00  |........."......|
000033e0  00 00 00 00 00 00 00 00  00 00 00 00 04 00 f1 ff  |................|
000033f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003400  ad 00 00 00 00 00 15 00  a8 3d 00 00 00 00 00 00  |.........=......|
00003410  00 00 00 00 00 00 00 00  be 00 00 00 01 00 17 00  |................|
00003420  b0 3d 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.=..............|
00003430  c7 00 00 00 00 00 15 00  a0 3d 00 00 00 00 00 00  |.........=......|
00003440  00 00 00 00 00 00 00 00  da 00 00 00 00 00 13 00  |................|
00003450  2c 21 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |,!..............|
00003460  ed 00 00 00 01 00 18 00  a0 3f 00 00 00 00 00 00  |.........?......|
00003470  00 00 00 00 00 00 00 00  ed 01 00 00 02 00 0c 00  |................|
00003480  00 10 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003490  03 01 00 00 12 00 10 00  e0 13 00 00 00 00 00 00  |................|
000034a0  05 00 00 00 00 00 00 00  13 01 00 00 20 00 00 00  |............ ...|
000034b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000034c0  ad 01 00 00 20 00 19 00  00 40 00 00 00 00 00 00  |.... ....@......|
000034d0  00 00 00 00 00 00 00 00  2f 01 00 00 12 00 00 00  |......../.......|
000034e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000034f0  41 01 00 00 11 00 12 00  c0 20 00 00 00 00 00 00  |A........ ......|
00003500  40 00 00 00 00 00 00 00  48 01 00 00 12 00 10 00  |@.......H.......|
00003510  a9 11 00 00 00 00 00 00  78 01 00 00 00 00 00 00  |........x.......|
00003520  56 01 00 00 11 00 12 00  20 20 00 00 00 00 00 00  |V.......  ......|
00003530  44 00 00 00 00 00 00 00  5d 01 00 00 10 00 19 00  |D.......].......|
00003540  10 40 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.@..............|
00003550  0d 01 00 00 12 02 11 00  e8 13 00 00 00 00 00 00  |................|
00003560  00 00 00 00 00 00 00 00  64 01 00 00 12 00 00 00  |........d.......|
00003570  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003580  78 01 00 00 12 00 00 00  00 00 00 00 00 00 00 00  |x...............|
00003590  00 00 00 00 00 00 00 00  8c 01 00 00 12 00 00 00  |................|
000035a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000035b0  ab 01 00 00 10 00 19 00  00 40 00 00 00 00 00 00  |.........@......|
000035c0  00 00 00 00 00 00 00 00  b8 01 00 00 20 00 00 00  |............ ...|
000035d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000035e0  c7 01 00 00 11 02 19 00  08 40 00 00 00 00 00 00  |.........@......|
000035f0  00 00 00 00 00 00 00 00  d4 01 00 00 11 00 12 00  |................|
00003600  00 20 00 00 00 00 00 00  04 00 00 00 00 00 00 00  |. ..............|
00003610  e3 01 00 00 12 00 10 00  70 13 00 00 00 00 00 00  |........p.......|
00003620  65 00 00 00 00 00 00 00  b9 00 00 00 10 00 1a 00  |e...............|
00003630  18 40 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.@..............|
00003640  b1 01 00 00 12 00 10 00  c0 10 00 00 00 00 00 00  |................|
00003650  2f 00 00 00 00 00 00 00  f3 01 00 00 11 00 12 00  |/...............|
00003660  80 20 00 00 00 00 00 00  40 00 00 00 00 00 00 00  |. ......@.......|
00003670  fa 01 00 00 10 00 1a 00  10 40 00 00 00 00 00 00  |.........@......|
00003680  00 00 00 00 00 00 00 00  06 02 00 00 12 00 10 00  |................|
00003690  21 13 00 00 00 00 00 00  43 00 00 00 00 00 00 00  |!.......C.......|
000036a0  0b 02 00 00 12 00 00 00  00 00 00 00 00 00 00 00  |................|
000036b0  00 00 00 00 00 00 00 00  25 02 00 00 11 02 19 00  |........%.......|
000036c0  10 40 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.@..............|
000036d0  31 02 00 00 20 00 00 00  00 00 00 00 00 00 00 00  |1... ...........|
000036e0  00 00 00 00 00 00 00 00  4b 02 00 00 22 00 00 00  |........K..."...|
000036f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003700  00 63 72 74 73 74 75 66  66 2e 63 00 64 65 72 65  |.crtstuff.c.dere|
00003710  67 69 73 74 65 72 5f 74  6d 5f 63 6c 6f 6e 65 73  |gister_tm_clones|
00003720  00 5f 5f 64 6f 5f 67 6c  6f 62 61 6c 5f 64 74 6f  |.__do_global_dto|
00003730  72 73 5f 61 75 78 00 63  6f 6d 70 6c 65 74 65 64  |rs_aux.completed|
00003740  2e 38 30 36 31 00 5f 5f  64 6f 5f 67 6c 6f 62 61  |.8061.__do_globa|
00003750  6c 5f 64 74 6f 72 73 5f  61 75 78 5f 66 69 6e 69  |l_dtors_aux_fini|
00003760  5f 61 72 72 61 79 5f 65  6e 74 72 79 00 66 72 61  |_array_entry.fra|
00003770  6d 65 5f 64 75 6d 6d 79  00 5f 5f 66 72 61 6d 65  |me_dummy.__frame|
00003780  5f 64 75 6d 6d 79 5f 69  6e 69 74 5f 61 72 72 61  |_dummy_init_arra|
00003790  79 5f 65 6e 74 72 79 00  6d 61 69 6e 2e 63 00 5f  |y_entry.main.c._|
000037a0  5f 46 52 41 4d 45 5f 45  4e 44 5f 5f 00 5f 5f 69  |_FRAME_END__.__i|
000037b0  6e 69 74 5f 61 72 72 61  79 5f 65 6e 64 00 5f 44  |nit_array_end._D|
000037c0  59 4e 41 4d 49 43 00 5f  5f 69 6e 69 74 5f 61 72  |YNAMIC.__init_ar|
000037d0  72 61 79 5f 73 74 61 72  74 00 5f 5f 47 4e 55 5f  |ray_start.__GNU_|
000037e0  45 48 5f 46 52 41 4d 45  5f 48 44 52 00 5f 47 4c  |EH_FRAME_HDR._GL|
000037f0  4f 42 41 4c 5f 4f 46 46  53 45 54 5f 54 41 42 4c  |OBAL_OFFSET_TABL|
00003800  45 5f 00 5f 5f 6c 69 62  63 5f 63 73 75 5f 66 69  |E_.__libc_csu_fi|
00003810  6e 69 00 5f 49 54 4d 5f  64 65 72 65 67 69 73 74  |ni._ITM_deregist|
00003820  65 72 54 4d 43 6c 6f 6e  65 54 61 62 6c 65 00 70  |erTMCloneTable.p|
00003830  75 74 73 40 40 47 4c 49  42 43 5f 32 2e 32 2e 35  |uts@@GLIBC_2.2.5|
00003840  00 66 6c 61 67 5f 32 00  76 61 6c 69 64 61 74 65  |.flag_2.validate|
00003850  5f 66 6c 61 67 00 66 6c  61 67 5f 30 00 5f 65 64  |_flag.flag_0._ed|
00003860  61 74 61 00 73 74 72 6c  65 6e 40 40 47 4c 49 42  |ata.strlen@@GLIB|
00003870  43 5f 32 2e 32 2e 35 00  70 72 69 6e 74 66 40 40  |C_2.2.5.printf@@|
00003880  47 4c 49 42 43 5f 32 2e  32 2e 35 00 5f 5f 6c 69  |GLIBC_2.2.5.__li|
00003890  62 63 5f 73 74 61 72 74  5f 6d 61 69 6e 40 40 47  |bc_start_main@@G|
000038a0  4c 49 42 43 5f 32 2e 32  2e 35 00 5f 5f 64 61 74  |LIBC_2.2.5.__dat|
000038b0  61 5f 73 74 61 72 74 00  5f 5f 67 6d 6f 6e 5f 73  |a_start.__gmon_s|
000038c0  74 61 72 74 5f 5f 00 5f  5f 64 73 6f 5f 68 61 6e  |tart__.__dso_han|
000038d0  64 6c 65 00 5f 49 4f 5f  73 74 64 69 6e 5f 75 73  |dle._IO_stdin_us|
000038e0  65 64 00 5f 5f 6c 69 62  63 5f 63 73 75 5f 69 6e  |ed.__libc_csu_in|
000038f0  69 74 00 66 6c 61 67 5f  31 00 5f 5f 62 73 73 5f  |it.flag_1.__bss_|
00003900  73 74 61 72 74 00 6d 61  69 6e 00 5f 5f 69 73 6f  |start.main.__iso|
00003910  63 39 39 5f 73 63 61 6e  66 40 40 47 4c 49 42 43  |c99_scanf@@GLIBC|
00003920  5f 32 2e 37 00 5f 5f 54  4d 43 5f 45 4e 44 5f 5f  |_2.7.__TMC_END__|
00003930  00 5f 49 54 4d 5f 72 65  67 69 73 74 65 72 54 4d  |._ITM_registerTM|
00003940  43 6c 6f 6e 65 54 61 62  6c 65 00 5f 5f 63 78 61  |CloneTable.__cxa|
00003950  5f 66 69 6e 61 6c 69 7a  65 40 40 47 4c 49 42 43  |_finalize@@GLIBC|
00003960  5f 32 2e 32 2e 35 00 00  2e 73 79 6d 74 61 62 00  |_2.2.5...symtab.|
00003970  2e 73 74 72 74 61 62 00  2e 73 68 73 74 72 74 61  |.strtab..shstrta|
00003980  62 00 2e 69 6e 74 65 72  70 00 2e 6e 6f 74 65 2e  |b..interp..note.|
00003990  67 6e 75 2e 70 72 6f 70  65 72 74 79 00 2e 6e 6f  |gnu.property..no|
000039a0  74 65 2e 67 6e 75 2e 62  75 69 6c 64 2d 69 64 00  |te.gnu.build-id.|
000039b0  2e 6e 6f 74 65 2e 41 42  49 2d 74 61 67 00 2e 67  |.note.ABI-tag..g|
000039c0  6e 75 2e 68 61 73 68 00  2e 64 79 6e 73 79 6d 00  |nu.hash..dynsym.|
000039d0  2e 64 79 6e 73 74 72 00  2e 67 6e 75 2e 76 65 72  |.dynstr..gnu.ver|
000039e0  73 69 6f 6e 00 2e 67 6e  75 2e 76 65 72 73 69 6f  |sion..gnu.versio|
000039f0  6e 5f 72 00 2e 72 65 6c  61 2e 64 79 6e 00 2e 72  |n_r..rela.dyn..r|
00003a00  65 6c 61 2e 70 6c 74 00  2e 69 6e 69 74 00 2e 70  |ela.plt..init..p|
00003a10  6c 74 2e 67 6f 74 00 2e  70 6c 74 2e 73 65 63 00  |lt.got..plt.sec.|
00003a20  2e 74 65 78 74 00 2e 66  69 6e 69 00 2e 72 6f 64  |.text..fini..rod|
00003a30  61 74 61 00 2e 65 68 5f  66 72 61 6d 65 5f 68 64  |ata..eh_frame_hd|
00003a40  72 00 2e 65 68 5f 66 72  61 6d 65 00 2e 69 6e 69  |r..eh_frame..ini|
00003a50  74 5f 61 72 72 61 79 00  2e 66 69 6e 69 5f 61 72  |t_array..fini_ar|
00003a60  72 61 79 00 2e 64 79 6e  61 6d 69 63 00 2e 64 61  |ray..dynamic..da|
00003a70  74 61 00 2e 62 73 73 00  2e 63 6f 6d 6d 65 6e 74  |ta..bss..comment|
00003a80  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00003ac0  00 00 00 00 00 00 00 00  1b 00 00 00 01 00 00 00  |................|
00003ad0  02 00 00 00 00 00 00 00  18 03 00 00 00 00 00 00  |................|
00003ae0  18 03 00 00 00 00 00 00  1c 00 00 00 00 00 00 00  |................|
00003af0  00 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00003b00  00 00 00 00 00 00 00 00  23 00 00 00 07 00 00 00  |........#.......|
00003b10  02 00 00 00 00 00 00 00  38 03 00 00 00 00 00 00  |........8.......|
00003b20  38 03 00 00 00 00 00 00  20 00 00 00 00 00 00 00  |8....... .......|
00003b30  00 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00003b40  00 00 00 00 00 00 00 00  36 00 00 00 07 00 00 00  |........6.......|
00003b50  02 00 00 00 00 00 00 00  58 03 00 00 00 00 00 00  |........X.......|
00003b60  58 03 00 00 00 00 00 00  24 00 00 00 00 00 00 00  |X.......$.......|
00003b70  00 00 00 00 00 00 00 00  04 00 00 00 00 00 00 00  |................|
00003b80  00 00 00 00 00 00 00 00  49 00 00 00 07 00 00 00  |........I.......|
00003b90  02 00 00 00 00 00 00 00  7c 03 00 00 00 00 00 00  |........|.......|
00003ba0  7c 03 00 00 00 00 00 00  20 00 00 00 00 00 00 00  ||....... .......|
00003bb0  00 00 00 00 00 00 00 00  04 00 00 00 00 00 00 00  |................|
00003bc0  00 00 00 00 00 00 00 00  57 00 00 00 f6 ff ff 6f  |........W......o|
00003bd0  02 00 00 00 00 00 00 00  a0 03 00 00 00 00 00 00  |................|
00003be0  a0 03 00 00 00 00 00 00  24 00 00 00 00 00 00 00  |........$.......|
00003bf0  06 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00003c00  00 00 00 00 00 00 00 00  61 00 00 00 0b 00 00 00  |........a.......|
00003c10  02 00 00 00 00 00 00 00  c8 03 00 00 00 00 00 00  |................|
00003c20  c8 03 00 00 00 00 00 00  f0 00 00 00 00 00 00 00  |................|
00003c30  07 00 00 00 01 00 00 00  08 00 00 00 00 00 00 00  |................|
00003c40  18 00 00 00 00 00 00 00  69 00 00 00 03 00 00 00  |........i.......|
00003c50  02 00 00 00 00 00 00 00  b8 04 00 00 00 00 00 00  |................|
00003c60  b8 04 00 00 00 00 00 00  a9 00 00 00 00 00 00 00  |................|
00003c70  00 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00003c80  00 00 00 00 00 00 00 00  71 00 00 00 ff ff ff 6f  |........q......o|
00003c90  02 00 00 00 00 00 00 00  62 05 00 00 00 00 00 00  |........b.......|
00003ca0  62 05 00 00 00 00 00 00  14 00 00 00 00 00 00 00  |b...............|
00003cb0  06 00 00 00 00 00 00 00  02 00 00 00 00 00 00 00  |................|
00003cc0  02 00 00 00 00 00 00 00  7e 00 00 00 fe ff ff 6f  |........~......o|
00003cd0  02 00 00 00 00 00 00 00  78 05 00 00 00 00 00 00  |........x.......|
00003ce0  78 05 00 00 00 00 00 00  30 00 00 00 00 00 00 00  |x.......0.......|
00003cf0  07 00 00 00 01 00 00 00  08 00 00 00 00 00 00 00  |................|
00003d00  00 00 00 00 00 00 00 00  8d 00 00 00 04 00 00 00  |................|
00003d10  02 00 00 00 00 00 00 00  a8 05 00 00 00 00 00 00  |................|
00003d20  a8 05 00 00 00 00 00 00  c0 00 00 00 00 00 00 00  |................|
00003d30  06 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00003d40  18 00 00 00 00 00 00 00  97 00 00 00 04 00 00 00  |................|
00003d50  42 00 00 00 00 00 00 00  68 06 00 00 00 00 00 00  |B.......h.......|
00003d60  68 06 00 00 00 00 00 00  60 00 00 00 00 00 00 00  |h.......`.......|
00003d70  06 00 00 00 18 00 00 00  08 00 00 00 00 00 00 00  |................|
00003d80  18 00 00 00 00 00 00 00  a1 00 00 00 01 00 00 00  |................|
00003d90  06 00 00 00 00 00 00 00  00 10 00 00 00 00 00 00  |................|
00003da0  00 10 00 00 00 00 00 00  1b 00 00 00 00 00 00 00  |................|
00003db0  00 00 00 00 00 00 00 00  04 00 00 00 00 00 00 00  |................|
00003dc0  00 00 00 00 00 00 00 00  9c 00 00 00 01 00 00 00  |................|
00003dd0  06 00 00 00 00 00 00 00  20 10 00 00 00 00 00 00  |........ .......|
00003de0  20 10 00 00 00 00 00 00  50 00 00 00 00 00 00 00  | .......P.......|
00003df0  00 00 00 00 00 00 00 00  10 00 00 00 00 00 00 00  |................|
00003e00  10 00 00 00 00 00 00 00  a7 00 00 00 01 00 00 00  |................|
00003e10  06 00 00 00 00 00 00 00  70 10 00 00 00 00 00 00  |........p.......|
00003e20  70 10 00 00 00 00 00 00  10 00 00 00 00 00 00 00  |p...............|
00003e30  00 00 00 00 00 00 00 00  10 00 00 00 00 00 00 00  |................|
00003e40  10 00 00 00 00 00 00 00  b0 00 00 00 01 00 00 00  |................|
00003e50  06 00 00 00 00 00 00 00  80 10 00 00 00 00 00 00  |................|
00003e60  80 10 00 00 00 00 00 00  40 00 00 00 00 00 00 00  |........@.......|
00003e70  00 00 00 00 00 00 00 00  10 00 00 00 00 00 00 00  |................|
00003e80  10 00 00 00 00 00 00 00  b9 00 00 00 01 00 00 00  |................|
00003e90  06 00 00 00 00 00 00 00  c0 10 00 00 00 00 00 00  |................|
00003ea0  c0 10 00 00 00 00 00 00  25 03 00 00 00 00 00 00  |........%.......|
00003eb0  00 00 00 00 00 00 00 00  10 00 00 00 00 00 00 00  |................|
00003ec0  00 00 00 00 00 00 00 00  bf 00 00 00 01 00 00 00  |................|
00003ed0  06 00 00 00 00 00 00 00  e8 13 00 00 00 00 00 00  |................|
00003ee0  e8 13 00 00 00 00 00 00  0d 00 00 00 00 00 00 00  |................|
00003ef0  00 00 00 00 00 00 00 00  04 00 00 00 00 00 00 00  |................|
00003f00  00 00 00 00 00 00 00 00  c5 00 00 00 01 00 00 00  |................|
00003f10  02 00 00 00 00 00 00 00  00 20 00 00 00 00 00 00  |......... ......|
00003f20  00 20 00 00 00 00 00 00  2c 01 00 00 00 00 00 00  |. ......,.......|
00003f30  00 00 00 00 00 00 00 00  20 00 00 00 00 00 00 00  |........ .......|
00003f40  00 00 00 00 00 00 00 00  cd 00 00 00 01 00 00 00  |................|
00003f50  02 00 00 00 00 00 00 00  2c 21 00 00 00 00 00 00  |........,!......|
00003f60  2c 21 00 00 00 00 00 00  4c 00 00 00 00 00 00 00  |,!......L.......|
00003f70  00 00 00 00 00 00 00 00  04 00 00 00 00 00 00 00  |................|
00003f80  00 00 00 00 00 00 00 00  db 00 00 00 01 00 00 00  |................|
00003f90  02 00 00 00 00 00 00 00  78 21 00 00 00 00 00 00  |........x!......|
00003fa0  78 21 00 00 00 00 00 00  28 01 00 00 00 00 00 00  |x!......(.......|
00003fb0  00 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00003fc0  00 00 00 00 00 00 00 00  e5 00 00 00 0e 00 00 00  |................|
00003fd0  03 00 00 00 00 00 00 00  a0 3d 00 00 00 00 00 00  |.........=......|
00003fe0  a0 2d 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |.-..............|
00003ff0  00 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00004000  08 00 00 00 00 00 00 00  f1 00 00 00 0f 00 00 00  |................|
00004010  03 00 00 00 00 00 00 00  a8 3d 00 00 00 00 00 00  |.........=......|
00004020  a8 2d 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |.-..............|
00004030  00 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00004040  08 00 00 00 00 00 00 00  fd 00 00 00 06 00 00 00  |................|
00004050  03 00 00 00 00 00 00 00  b0 3d 00 00 00 00 00 00  |.........=......|
00004060  b0 2d 00 00 00 00 00 00  f0 01 00 00 00 00 00 00  |.-..............|
00004070  07 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00004080  10 00 00 00 00 00 00 00  ab 00 00 00 01 00 00 00  |................|
00004090  03 00 00 00 00 00 00 00  a0 3f 00 00 00 00 00 00  |.........?......|
000040a0  a0 2f 00 00 00 00 00 00  60 00 00 00 00 00 00 00  |./......`.......|
000040b0  00 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
000040c0  08 00 00 00 00 00 00 00  06 01 00 00 01 00 00 00  |................|
000040d0  03 00 00 00 00 00 00 00  00 40 00 00 00 00 00 00  |.........@......|
000040e0  00 30 00 00 00 00 00 00  10 00 00 00 00 00 00 00  |.0..............|
000040f0  00 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00004100  00 00 00 00 00 00 00 00  0c 01 00 00 08 00 00 00  |................|
00004110  03 00 00 00 00 00 00 00  10 40 00 00 00 00 00 00  |.........@......|
00004120  10 30 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |.0..............|
00004130  00 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00004140  00 00 00 00 00 00 00 00  11 01 00 00 01 00 00 00  |................|
00004150  30 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |0...............|
00004160  10 30 00 00 00 00 00 00  2b 00 00 00 00 00 00 00  |.0......+.......|
00004170  00 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00004180  01 00 00 00 00 00 00 00  01 00 00 00 02 00 00 00  |................|
00004190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000041a0  40 30 00 00 00 00 00 00  c0 06 00 00 00 00 00 00  |@0..............|
000041b0  1d 00 00 00 2e 00 00 00  08 00 00 00 00 00 00 00  |................|
000041c0  18 00 00 00 00 00 00 00  09 00 00 00 03 00 00 00  |................|
000041d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000041e0  00 37 00 00 00 00 00 00  67 02 00 00 00 00 00 00  |.7......g.......|
000041f0  00 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00004200  00 00 00 00 00 00 00 00  11 00 00 00 03 00 00 00  |................|
00004210  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00004220  67 39 00 00 00 00 00 00  1a 01 00 00 00 00 00 00  |g9..............|
00004230  00 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00004240  00 00 00 00 00 00 00 00                           |........|
00004248

このようになりました。フラグが無いか探すと

00002020  63 00 00 00 34 00 00 00  63 00 00 00 5f 00 00 00  |c...4...c..._...|
00002030  75 00 00 00 62 00 00 00  5f 00 00 00 5f 00 00 00  |u...b..._..._...|
00002040  64 00 00 00 74 00 00 00  5f 00 00 00 72 00 00 00  |d...t..._...r...|
00002050  5f 00 00 00 31 00 00 00  5f 00 00 00 34 00 00 00  |_...1..._...4...|
00002060  7d 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |}...............|
00002070  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00002080  74 00 00 00 62 00 00 00  34 00 00 00 79 00 00 00  |t...b...4...y...|
00002090  5f 00 00 00 31 00 00 00  74 00 00 00 75 00 00 00  |_...1...t...u...|
000020a0  30 00 00 00 34 00 00 00  74 00 00 00 65 00 00 00  |0...4...t...e...|
000020b0  73 00 00 00 69 00 00 00  66 00 00 00 67 00 00 00  |s...i...f...g...|
000020c0  66 00 00 00 7b 00 00 00  6e 00 00 00 30 00 00 00  |f...{...n...0...|
000020d0  61 00 00 00 65 00 00 00  30 00 00 00 6e 00 00 00  |a...e...0...n...|
000020e0  5f 00 00 00 65 00 00 00  34 00 00 00 65 00 00 00  |_...e...4...e...|
000020f0  70 00 00 00 74 00 00 00  31 00 00 00 33 00 00 00  |p...t...1...3...|

この部分を並び替えてあげることによって、ctf4b{… の文字列が出てきそうです。
順番通りに並び替えてあげると

ctf4b{c4n_y0u_ab1e_t0_und0_t4e_t4ree_sp1it_f14g3}

フラグを見つけることができました。

Poker(medium)

そして、Pokerです。問題文は以下の通りです。

みんなでポーカーで遊ぼう!点数をたくさん獲得するとフラグがもらえるみたい!
でもこのバイナリファイル、動かしてみると...?実行しながら中身が確認できる専門のツールを使ってみよう!

配布ファイルはPoker.tar.gzでした。

問題文から動的解析をして値を書き換える必要があるということがわかります。
ではこれも展開して実行してみましょう。
実行すると、ポーカーゲームが始まり、特定の点数以上にいくとフラグが貰えるようです。

██╗███╗   ██╗██████╗ ██╗ █████╗ ███╗   ██╗    ██████╗  ██████╗ ██╗  ██╗███████╗██████╗
██║████╗  ██║██╔══██╗██║██╔══██╗████╗  ██║    ██╔══██╗██╔═══██╗██║ ██╔╝██╔════╝██╔══██╗
██║██╔██╗ ██║██║  ██║██║███████║██╔██╗ ██║    ██████╔╝██║   ██║█████╔╝ █████╗  ██████╔╝
██║██║╚██╗██║██║  ██║██║██╔══██║██║╚██╗██║    ██╔═══╝ ██║   ██║██╔═██╗ ██╔══╝  ██╔══██╗
██║██║ ╚████║██████╔╝██║██║  ██║██║ ╚████║    ██║     ╚██████╔╝██║  ██╗███████╗██║  ██║
╚═╝╚═╝  ╚═══╝╚═════╝ ╚═╝╚═╝  ╚═╝╚═╝  ╚═══╝    ╚═╝      ╚═════╝ ╚═╝  ╚═╝╚══════╝╚═╝  ╚═

================
| Score :   0  |
================

[?] Enter 1 or 2: 

さっそく動的解析を行っていきます。動的解析にはgdb-pedaを使用しました。
gdb上でrunコマンド実行して、プログラムが始まると一回1か2を選択して、ctrl+cでプログラムを中止させます。
するとデバッグ画面が出てきます。

gdb-peda$ run

nextコマンドで先に進めていきましょう。

gdb-peda$ n

しばらくするとcmp DWORD PTR [rbp-0x4],0x63という命令が見えてきます。 この命令から99回ポーカーで勝利するとフラグが表示されるようです。
レジスタに買った回数が記録されているときに、その値を書き換えてあげるとフラグが出ました。

ctf4b{4ll_w3_h4v3_70_d3cide_1s_wh4t_t0_d0_w1th_7he_71m3_7h47_i5_g1v3n_u5}

ELFの実行可能ヘッダーについて

実行可能ヘッダーを詳しく見ていこうと思います。

実行可能ヘッダーの定義

ターミナルでman elfを入力することで確認することができます。

#define EI_NIDENT 16

typedef struct {
    unsigned char e_ident[EI_NIDENT];
    uint16_t      e_type;
    uint16_t      e_machine;
    uint32_t      e_version;
    ElfN_Addr     e_entry;
    ElfN_Off      e_phoff;
    ElfN_Off      e_shoff;
    uint32_t      e_flags;
    uint16_t      e_ehsize;
    uint16_t      e_phentsize;
    uint16_t      e_phnum;
    uint16_t      e_shentsize;
    uint16_t      e_shnum;
    uint16_t      e_shstrndx;
} ElfN_Ehdr;

e_ident配列

 e_identは16バイトの配列です。この配列の先頭にはELFファイルであることを示す、0x7f454c46という値が入っています。
 続いて、このELFファイルが何ビットのアーキテクチャで構成されているかを表す値が入ります。

  • 32ビット => 1
  • 64ビット => 2

 その後にはバイトオーダーを示すビット列が並びます。

 次のバイトには、ELFのバージョンが入ります。現在のバージョンは1しかありません。
 最後は、ABI(Application Binary Interface)とOSの情報を示す値が格納されます。ここは難しくてよく分かりませんでしたが、デフォルトの値は0入るそうです。

e_typeフィールド

 このフィールドには、バイナリの種類が入ります。

  • ET_NONE(ファイルタイプが存在しない) => 0
  • ET_REL(再配置可能ファイル) => 1
  • ET_EXEC(実行可能ファイル) => 2
  • ET_DYN(共有オブジェクトファイル) => 3
  • ET_CORE(コアファイル) => 4

e_machineフィールド

 このフィールドには、バイナリを実行するアーキテクチャが入ります。下記に有名なものを抜粋しました。

  • ARM 32-bit architecture => 40(0x28)
  • AMD x86-64 architecture => 62(0x3E)
  • ARM 64-bit architecture => 183(0xB7)

e_versionフィールド

 ここには、e_ident配列にも記述されていたELFファイルのバージョンが入ります。
 現状は1しかありません。

e_entryフィールド

 このフィールドには、バイナリのエントリポイントと呼ばれる、実行を開始すべき場所の仮想アドレスが入ります。
 環境によって入る値が変わります。
 例:0x400100

e_phoffフィールド

 これは、プログラムヘッダーテーブルのファイルオフセットを示します。64ビットアーキテクチャの場合、64(0x40)となります。

 ※ ファイルオフセット‥ヘッダーにたどり着くまでにファイルから読み取らなければならないバイト数のこと

e_shoffフィールド

 ここは、セクションヘッダーテーブルのファイルオフセットを示します。環境によって大きく値が違ってきます。
 セクションヘッダーテーブルが存在しない場合、0が入ります。

e_flagsフィールド

 このフィールドには、プロセッサ固有のフラグが入ります。
 x86バイナリの場合は、基本的に0が入るそうです。

e_ehsizeフィールド

 実行可能ヘッダーの大きさを表します。

  • 32ビットx86バイナリ => 52バイト(0x34)
  • 64ビットx86バイナリ => 64バイト(0x40)

e_phentsizeフィールド

 ELFファイルのプログラムヘッダーテーブルのエントリサイズをバイト単位で示します。
 例:56バイト(0x38)

e_phnumフィールド

 このフィールドは、プログラムヘッダテーブルのエントリ数を表します。
 例:9

 e_phentsizeフィールドとe_phnumフィールドの値を掛けることによって、プログラムヘッダーテーブル内の合計サイズを求めることができます。

e_shentsizeフィールド

 このフィールドには、セクションヘッダーテーブルのエントリサイズをバイト単位で示します。
 例:64バイト(0x40)

e_shnumフィールド

 ここには、セクションヘッダーテーブルのエントリ数が入ります。
 例:31(0x1F)

 e_shentsizeフィールドとe_shnumフィールドの値を掛けることによって、セクションヘッダーテーブルの内の合計サイズを求めることができます。

e_shstrndxフィールド

 このフィールドには、セクションヘッダー文字列テーブルのインデックスが記述されています。
 例:28(0x1C)

まとめ

 最初の方はイメージしやすかったのですが、後半のフィールド値の役割や意味をあまり理解できませんでした。 しかし、プログラムヘッダーやセクションヘッダーについて少し触れることができました。
 次は、セクションヘッダーについて詳しく勉強していこうと思います。

WaniCTF 2023 Writeup

Reversingのfermatという問題のWriteupを書きます。

様子を見る

zipファイルを解凍し、fileコマンドでファイル形式を確認します。

fermat: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=163a577f34700eab526e54e030d57fe930b0aa76, for GNU/Linux 3.2.0, not stripped

ELFの実行ファイルであることがわかりました。
実行すると、Input a>と出てきたので適当にeを入力すると

Input b> Input c> (a, b, c) = (0, 0, 0)
Invalid value :(

このような文字が返ってきました。
stringsコマンドで表示可能な文字列を見てもフラグは無さそうです。

Ghidraで静的解析をする

続いてGhidraで静的解析を行います。

Symbol Treeを確認すると、checkという怪しそうな関数名がありました。
check関数の中身を確認すると

undefined8 check(uint param_1,uint param_2,uint param_3)

{
  undefined8 uVar1;
  
  if (((param_1 < 3) || (param_2 < 3)) || (param_3 < 3)) {
    uVar1 = 0;
  }
  else if (param_1 * param_1 * param_1 + param_2 * param_2 * param_2 == param_3 * param_3 * param_ 3)
  {
    uVar1 = 1;
  }
  else {
    uVar1 = 0;
  }
  return uVar1;
}

と書かれていました。どうやら、x3+y3=z3を満たす3以上の引数3つを入力するといいっぽいです。
しかし、フェルマーの最終定理によりこれを満たすx, y, zは存在しません。デバッガを利用するしかなさそうです。

GDBで動的解析をする

次はデバッガであるgdbを使って、動的解析をします。
gdb fermatgdbを立ち上げます。
check関数の動きを見たいので、b checkでbreak pointを設定します。
runで動かすと入力を求められるのでとりあえず、5を3回入力します。

Input a> 5
Input b> 5
Input c> 5
(a, b, c) = (5, 5, 5)

次にGhidraのcheck関数のアセンブラから対象のジャンプ命令の箇所を探します。 gdbに戻ってこの命令の箇所まで飛ばしましょう。 ここでinfo registersを入力してレジスタの状態を確認します。
eflagsにZFが立っていません。JZはZFが立っていないとジャンプしないため、ここでZFを立たせます。 ZFを立たせればよいので、適当にset $eflags=0x246を入力します。
もう一度レジスタの状態を確認すると
eflagsにZFが立っています。このまま進めてみましょう。
何回か進めると無事にフラグが出てきました。

ELFのことを少し勉強した

ELFについて

ELFとは、Executable and Linkable Format のことです。Linuxのシステムにおいて標準のバイナリフォーマットになっています。

ELFの構成

ELFは大きく以下の4つに分けることができます。

  1. 実行可能ヘッダー
  2. プログラムヘッダー
  3. セクション
  4. セクションヘッダー

ELFの定義を見る

ターミナルでman elfを入力すると見ることができます。
↓実行可能ヘッダーのみ抜粋

#define EI_NIDENT 16

typedef struct {
    unsigned char e_ident[EI_NIDENT];
    uint16_t      e_type;
    uint16_t      e_machine;
    uint32_t      e_version;
    ElfN_Addr     e_entry;
    ElfN_Off      e_phoff;
    ElfN_Off      e_shoff;
    uint32_t      e_flags;
    uint16_t      e_ehsize;
    uint16_t      e_phentsize;
    uint16_t      e_phnum;
    uint16_t      e_shentsize;
    uint16_t      e_shnum;
    uint16_t      e_shstrndx;
} ElfN_Ehdr;

準備

#inlucde <stdio.h>

void main()
{
    printf("Hello World!\n");
}

このプログラムをgcc hello.cコンパイルします。

実行可能ヘッダーを見る

hello.cをコンパイルした時に作られたa.outの実行可能ヘッダーを見てみます。 実行可能ヘッダーを見るときはreadelf -h a.outを打ちます。

ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              DYN (Shared object file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x1060
  Start of program headers:          64 (bytes into file)
  Start of section headers:          14712 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         13
  Size of section headers:           64 (bytes)
  Number of section headers:         31
  Section header string table index: 30

実行可能ヘッダーでは、このバイナリファイルの種類やアーキテクチャのビット数、バイトオーダーなどを確認することができます。

プログラムヘッダー

次はプログラムヘッダーを確認しましょう。readelf -l -W a.outを入力してください。

Elf file type is DYN (Shared object file)
Entry point 0x1060
There are 13 program headers, starting at offset 64

Program Headers:
  Type           Offset   VirtAddr           PhysAddr           FileSiz  MemSiz   Flg Align
  PHDR           0x000040 0x0000000000000040 0x0000000000000040 0x0002d8 0x0002d8 R   0x8
  INTERP         0x000318 0x0000000000000318 0x0000000000000318 0x00001c 0x00001c R   0x1
      [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
  LOAD           0x000000 0x0000000000000000 0x0000000000000000 0x0005f8 0x0005f8 R   0x1000
  LOAD           0x001000 0x0000000000001000 0x0000000000001000 0x0001e5 0x0001e5 R E 0x1000
  LOAD           0x002000 0x0000000000002000 0x0000000000002000 0x000160 0x000160 R   0x1000
  LOAD           0x002db8 0x0000000000003db8 0x0000000000003db8 0x000258 0x000260 RW  0x1000
  DYNAMIC        0x002dc8 0x0000000000003dc8 0x0000000000003dc8 0x0001f0 0x0001f0 RW  0x8
  NOTE           0x000338 0x0000000000000338 0x0000000000000338 0x000020 0x000020 R   0x8
  NOTE           0x000358 0x0000000000000358 0x0000000000000358 0x000044 0x000044 R   0x4
  GNU_PROPERTY   0x000338 0x0000000000000338 0x0000000000000338 0x000020 0x000020 R   0x8
  GNU_EH_FRAME   0x002014 0x0000000000002014 0x0000000000002014 0x000044 0x000044 R   0x4
  GNU_STACK      0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW  0x10
  GNU_RELRO      0x002db8 0x0000000000003db8 0x0000000000003db8 0x000248 0x000248 R   0x1

 Section to Segment mapping:
  Segment Sections...
   00     
   01     .interp 
   02     .interp .note.gnu.property .note.gnu.build-id .note.ABI-tag .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt 
   03     .init .plt .plt.got .plt.sec .text .fini 
   04     .rodata .eh_frame_hdr .eh_frame 
   05     .init_array .fini_array .dynamic .got .data .bss 
   06     .dynamic 
   07     .note.gnu.property 
   08     .note.gnu.build-id .note.ABI-tag 
   09     .note.gnu.property 
   10     .eh_frame_hdr 
   11     
   12     .init_array .fini_array .dynamic .got 

プログラムヘッダーはELFを実行するための情報を持っています。

セクションヘッダー

続いてセクションヘッダーです。readelf -S -W a.outを入力してください。

There are 31 section headers, starting at offset 0x3978:

Section Headers:
  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            0000000000000000 000000 000000 00      0   0  0
  [ 1] .interp           PROGBITS        0000000000000318 000318 00001c 00   A  0   0  1
  [ 2] .note.gnu.property NOTE            0000000000000338 000338 000020 00   A  0   0  8
  [ 3] .note.gnu.build-id NOTE            0000000000000358 000358 000024 00   A  0   0  4
  [ 4] .note.ABI-tag     NOTE            000000000000037c 00037c 000020 00   A  0   0  4
  [ 5] .gnu.hash         GNU_HASH        00000000000003a0 0003a0 000024 00   A  6   0  8
  [ 6] .dynsym           DYNSYM          00000000000003c8 0003c8 0000a8 18   A  7   1  8
  [ 7] .dynstr           STRTAB          0000000000000470 000470 000082 00   A  0   0  1
  [ 8] .gnu.version      VERSYM          00000000000004f2 0004f2 00000e 02   A  6   0  2
  [ 9] .gnu.version_r    VERNEED         0000000000000500 000500 000020 00   A  7   1  8
  [10] .rela.dyn         RELA            0000000000000520 000520 0000c0 18   A  6   0  8
  [11] .rela.plt         RELA            00000000000005e0 0005e0 000018 18  AI  6  24  8
  [12] .init             PROGBITS        0000000000001000 001000 00001b 00  AX  0   0  4
  [13] .plt              PROGBITS        0000000000001020 001020 000020 10  AX  0   0 16
  [14] .plt.got          PROGBITS        0000000000001040 001040 000010 10  AX  0   0 16
  [15] .plt.sec          PROGBITS        0000000000001050 001050 000010 10  AX  0   0 16
  [16] .text             PROGBITS        0000000000001060 001060 000175 00  AX  0   0 16
  [17] .fini             PROGBITS        00000000000011d8 0011d8 00000d 00  AX  0   0  4
  [18] .rodata           PROGBITS        0000000000002000 002000 000011 00   A  0   0  4
  [19] .eh_frame_hdr     PROGBITS        0000000000002014 002014 000044 00   A  0   0  4
  [20] .eh_frame         PROGBITS        0000000000002058 002058 000108 00   A  0   0  8
  [21] .init_array       INIT_ARRAY      0000000000003db8 002db8 000008 08  WA  0   0  8
  [22] .fini_array       FINI_ARRAY      0000000000003dc0 002dc0 000008 08  WA  0   0  8
  [23] .dynamic          DYNAMIC         0000000000003dc8 002dc8 0001f0 10  WA  7   0  8
  [24] .got              PROGBITS        0000000000003fb8 002fb8 000048 08  WA  0   0  8
  [25] .data             PROGBITS        0000000000004000 003000 000010 00  WA  0   0  8
  [26] .bss              NOBITS          0000000000004010 003010 000008 00  WA  0   0  1
  [27] .comment          PROGBITS        0000000000000000 003010 00002b 01  MS  0   0  1
  [28] .symtab           SYMTAB          0000000000000000 003040 000618 18     29  46  8
  [29] .strtab           STRTAB          0000000000000000 003658 000203 00      0   0  1
  [30] .shstrtab         STRTAB          0000000000000000 00385b 00011a 00      0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
  L (link order), O (extra OS processing required), G (group), T (TLS),
  C (compressed), x (unknown), o (OS specific), E (exclude),
  l (large), p (processor specific)

ELFは、バイナリのコードとデータをセクションに分割します。セクションの構造自体はその内容によって異なり、各セクションの説明はセクションヘッダーに記載されています。

セクション

セクションヘッダーに書かれていたセクションには、具体的にどのようなものがあるのでしょうか。

  • .initセクション
    このセクションには、初期化を行う実行可能コードが含まれています。
  • .textセクション
    プログラムのメインコードを含んでいるセクションです。
  • .rodata
    定数値の格納を目的とするセクションです。

上記で紹介したのはセクションの一部です。

おわりに

ELFの勉強目的でこのブログを書いてみましたが、まだまだわからないことだらけです。各ヘッダーの詳しいことなどは今後書いていこうと思います。

SecHack365 2022 体験記

SecHack365 2022を修了したので体験記を書きました。

自己紹介

応募しようと思ったきっかけ

 大学1年の時から情報セキュリティに興味があったのですが、イベントに応募しようと思ったことはありませんでした。なぜなら、イベントに応募しても受かるわけないと考えていたからです。高校からPCを触っていたわけではなく、大学入学からプログラミングを始めました。
 そんなプログラミング経験1年も満たないような私が、SecHackに応募しようと思ったきっかけは、セキュリティ・キャンプフォーラム2022でした。セキュリティ・キャンプフォーラムはオンラインだったので、何となく視聴してみただけでした。すると、同世代くらいの人たちが楽しそうにセキュリティの話で盛り上がっていました。自分もこういった交流や技術的な話ができるようになりたいと思い、セキュリティイベントに参加したいと考えるようになりました。

課題応募時のプロフィール

 応募課題を書いていた時の私の状況はこんな感じでした。
 プログラミング歴:1年
 技術:HTML, CSS, Python, Java(授業のみ), Linux

コース選び

 私はネットワークに興味があり、ネットワークとセキュリティを組み合わせたものを作りたいと思っていたので、一番合っていそうな仲山ゼミを選択しました。

応募課題について

 応募課題の内容については詳しく書くことはできませんが、技術では他の応募者には勝てないので、とにかくやる気重視で自分の今までやってきたことをすべて書きました。
 確か応募課題の期限が2~3週間くらいだったかと思いますが、その間ずっとSecHackの応募課題のことを考えて、ギリギリまで粘りました。

格通

 通知が来るまではずっとSecHackのことが頭から離れず、夢でSecHackの合格を見るくらいでした。
 合格通知が来た時の嬉しさは今でも忘れません。

第1回イベントデイ(6月11日, 12日)

 1回目のイベントデイはオンラインでの開催でした。合格通知が来てすぐのイベントデイだったと思います。このイベントデイでSecHackの他のトレーニーと初の顔合わせになります。トレーニーは中学生から大学院生、社会人といった幅広い年齢層でとても驚きました。応募する前は自分が最年少ぐらいだろうと思っていたのですが、全然そんなことはありませんでした。
 第1回イベントデイでは自分の作りたいものを何となく想像していたぐらいで、具体的な仕様や機能などは決まっていませんでした。
集合イベントレポート

第2回イベントデイ(7月9日, 10日)

 2回目はオフラインでの開催でした。このイベントデイでは、自分の作りたいものをLT形式で発表しました。私は作りたいものとそれを作りたいと思った理由、システム構成図などをスライドで作成しました。
 第2回イベントで一番良かったと感じたところは、放課後の時間です。イベントデイは特定の時間までコースワークや講義があるのですが、それらがすべて終わると好きなことをしてもいい時間があります。この時間ではトレーニー同士でSecHackの開発の話や各コースの話、技術的な話などたくさん話しました。SecHack以外にもたくさんのことに取り組んでいるトレーニーの話を聞いて、自分の時間の使い方が下手だということを実感し、習慣化をすることを決意しました。
集合イベントレポート

番外編(習慣化)

 SecHackの各イベントデイでは、必ず習慣化セッションというものが行われます。SecHackは1年間という長い期間活動するので、習慣化を行うことが大切です。
 私は夏休みの間、オンライン上で朝活を行いました。朝活では、作品作りで使用する言語の勉強をしたり、技術書を読んだりしました。

第3回イベントデイ(8月24日, 25日)

 3回目のイベントデイは新型コロナウイルスの陽性者数が多く、予定ではオフライン開催でしたが、オンラインでの開催となりました。
 1日目は自分の作品についての発表を行い、トレーニーやトレーナーからたくさんの質問や意見をいただきました。表現方法のアイディアや現時点での問題点など、自分だけでは思い付かないようなフィードバックを得ることができました。また、他のトレーニーの進捗状況なんかも知ることができ、作品作りに対するモチベーションが高まりました。
 2日目の午前は講演が中心で、自分が知らなかった分野の最先端のお話を聞くことができました。午後からは「縁日」というトレーナー提供のワークショップがあり、トレーナーの技術レベルの高さを知るとともに楽しく色々なことを学ぶことができました。

 個人的な作品作りの進捗ですが、このあたりから本格的に手を動かして作品作りを行っていました。 実際に作ってみないと分からないということもあり、作りたいものを具体化しつつC#・Unityの勉強をしていました。
集合イベントレポート

第4回イベントデイ(10月1日, 2日)

 4回目のイベントデイもオンラインでの開催でした。
 このイベントデイでは、自分の作品について5分間の動画を作成して発表を行いました。動画で発表を行う経験自体が無かったので、動画用のスライド作りやデザインなどを勉強しました。動画発表を通して、作品の「魅せ方」の難しさを学ぶことができました。

第5回イベントデイ(11月11日, 12日, 13日)

 続いて5回目のイベントデイです。このイベントデイは3日間に渡って開催されました。
 前回は5分間の作品紹介動画を作成しての発表でしたが、今回はポスターを用いての発表でした。ポスターを作る前は、動画用のスライド作りと大して変わらないではないかと思っていたのですが、作ってみるとポスターのならではの表現方法があり、とても大変でした。現在、SecHackのWebサイトに私のポスターが載っていると思いますが、この頃のポスターはとにかく中身がスカスカでした。このぐらいから最終的に提出するポスターのデザインのことを考え始めました。
 そして、今回のイベントデイは久々のオフライン開催ということでたくさんのトレーニーと交流をしました。イベントデイにはトレーニーが自由に活動できる放課後の時間があるのですが、そこでは作品の進捗やポスター、大学などの話をしました。オフラインだからこそ得られた交流の場だったと思います。
 トレーナー主催の縁日の時間も初のオフライン開催でした。実機を用いたハンズオン的な講義が多く、めちゃくちゃ楽しかったです。

 ちなみにですが、この時期が自分的には一番キツかったです。SecHack関係では自分の技術不足で作品作りに行き詰ったり、作品の方向性で悩んだりしていました。それ以外では、大学で参加している課外活動やその他諸々の締切が重なっていて睡眠時間がなかなか取れていませんでした。肉体的にも精神的にも厳しかったですが、なんとか乗り越えることができました。SecHackに参加する際は、睡眠時間を確保できるような予定の組み方しましょう。
集合イベントレポート

第6回イベントデイ(1月27日, 28日, 29日)

 第6回イベントデイはSecHack内部での発表会でした。
 この発表会では、SecHackの成果を15分の動画にまとめて発表します。この成果発表会で優秀修了生が決定します。15分の動画と聞くと長く感じるかもしれませんが、SecHackの1年間の活動を振り返ると案外15分くらいいきます。
 SecHackで唯一後悔があるのがこの動画です。作品作りの方が自分の想定したよりも掛かってしまい、動画作りに全力を出すことができませんでした。成果発表会までの進捗予定は、12月の初めくらいに立てておきましょう。

成果発表会(3月4日)

 SecHackの最後がこの成果発表会になります。
 SecHackの1年間の成果として、外部の人に対して発表を行います。基本はポスターでの発表で、優秀修了生はポスター+動画での発表でした。今までの発表はSecHack内で、作品の内容や背景などが分かっている人に対してでした。しかし、この成果発表会では自分の作品ついて何も知らない人に対して説明をしました。この場でもたくさんの人から作品のフィードバックをいただきました。
集合イベントレポート

SecHack365を通して

 SecHack365では、たくさんのことを学ぶことができました。技術面での成長はもちろん、習慣化やゼミ活動で人間的にも成長できたと感じています。特にセキュリティに興味のある同年代との交流が、一番成長に繋がったと思います。
 私はSecHack365というコミュニティからたくさんのものを貰いました。それを今後何かしらの形で返していけたらと思っています。

応募するか迷ったら

 応募するだけタダなので、迷ったら応募しましょう。私もダメもとで応募して受かることができました。とりあえず行動することが大切だと思います。