보안_기타/ftz

objdump 및 level 20

정지홍 2024. 8. 29. 15:23

-d 옵션은 disassembly 결과 출력
[level20@ftz level20]$ objdump -d attackme

attackme:     file format elf32-i386

Disassembly of section .init:

080482a0 <.init>:
 80482a0:       55                      push   %ebp
....
 80482b6:       c3                      ret
Disassembly of section .plt:

080482b8 <.plt>:
 80482b8:       ff 35 a4 95 04 08       pushl  0x80495a4
...
 8048303:       e9 b0 ff ff ff          jmp    0x80482b8
Disassembly of section .text:

08048308 <.text>:
 8048308:       31 ed                   xor    %ebp,%ebp
...
 804848e:       c9                      leave
 804848f:       c3                      ret
Disassembly of section .fini:

08048490 <.fini>:
 8048490:       55                      push   %ebp
...
 80484aa:       c3                      ret

-f 옵션은 파일의 헤더 정보 출력
[level20@ftz level20]$ objdump -f attackme

attackme:     file format elf32-i386
architecture: i386, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x08048308

-p 옵션은 비공식 헤더 정보를 출력

[level20@ftz level20]$ objdump -p attackme

attackme:     file format elf32-i386

Program Header:
    PHDR off    0x00000034 vaddr 0x08048034 paddr 0x08048034 align 2**2
         filesz 0x000000c0 memsz 0x000000c0 flags r-x
  INTERP off    0x000000f4 vaddr 0x080480f4 paddr 0x080480f4 align 2**0
         filesz 0x00000013 memsz 0x00000013 flags r--
    LOAD off    0x00000000 vaddr 0x08048000 paddr 0x08048000 align 2**12
         filesz 0x000004b8 memsz 0x000004b8 flags r-x
    LOAD off    0x000004b8 vaddr 0x080494b8 paddr 0x080494b8 align 2**12
         filesz 0x00000108 memsz 0x00000110 flags rw-
 DYNAMIC off    0x000004c4 vaddr 0x080494c4 paddr 0x080494c4 align 2**2
         filesz 0x000000c8 memsz 0x000000c8 flags rw-
    NOTE off    0x00000108 vaddr 0x08048108 paddr 0x08048108 align 2**2
         filesz 0x00000020 memsz 0x00000020 flags r--

Dynamic Section:
  NEEDED      libc.so.6
  INIT        0x80482a0
  FINI        0x8048490
  HASH        0x8048128
  STRTAB      0x80481dc
  SYMTAB      0x804815c
  STRSZ       0x61
  SYMENT      0x10
  DEBUG       0x0
  PLTGOT      0x80495a0
  PLTRELSZ    0x20
  PLTREL      0x11
  JMPREL      0x8048280
  REL         0x8048270
  RELSZ       0x10
  RELENT      0x8
  VERNEED     0x8048250
  VERNEEDNUM  0x1
  VERSYM      0x804823e

Version References:
  required from libc.so.6:
    0x0d696910 0x00 02 GLIBC_2.0

이 외에도 s는 파일의 모든 섹션 정보 출력
t는 심볼 테이블 출력
r은 재배치 정보
j는 특정 섹션만 disassemble
x는 모든 헤더 정보 출력
h는 섹션 헤더 정보 출력. 이를 통해 섹션의 이름 타닙 주소 크기 등을 확인 가능.

(gdb) disas main
Dump of assembler code for function main:
0x080483b8 <main+0>:    push   ebp # 현재의 베이스 포인터를 스택에 저장
0x080483b9 <main+1>:    mov    ebp,esp # 스택 포인터를 베이스 포인터로 설정하여 새로운 스택 프레임을 만든다.
0x080483bb <main+3>:    sub    esp,0x58 # 88바이트
0x080483be <main+6>:    and    esp,0xfffffff0 # 스택을 16바이트로 정렬. 이를 통해 cpu의 메모리 접근을 최적화 및 성능 향상
0x080483c1 <main+9>:    mov    eax,0x0
0x080483c6 <main+14>:   sub    esp,eax
0x080483c8 <main+16>:   sub    esp,0x8  # 8바이트...
0x080483cb <main+19>:   push   0xc1d # 3101
0x080483d0 <main+24>:   push   0xc1d # 3101
0x080483d5 <main+29>:   call   0x80482f8 <setreuid> # 함수호출
0x080483da <main+34>:   add    esp,0x10 # 16 바이트
0x080483dd <main+37>:   sub    esp,0x4 
0x080483e0 <main+40>:   push   ds:0x80495c0 # 포맷 문자열의 주소로 보임...
0x080483e6 <main+46>:   push   0x4f  # 79
0x080483e8 <main+48>:   lea    eax,[ebp-88] # 88이 bleh의 주소로 보임
0x080483eb <main+51>:   push   eax
0x080483ec <main+52>:   call   0x80482c8 <fgets>
0x080483f1 <main+57>:   add    esp,0x10
0x080483f4 <main+60>:   sub    esp,0xc
0x080483f7 <main+63>:   lea    eax,[ebp-88]
0x080483fa <main+66>:   push   eax
0x080483fb <main+67>:   call   0x80482e8 <printf>
---Type <return> to continue, or q <return> to quit---
0x08048400 <main+72>:   add    esp,0x10
0x08048403 <main+75>:   leave
0x08048404 <main+76>:   ret
0x08048405 <main+77>:   nop
0x08048406 <main+78>:   nop
0x08048407 <main+79>:   nop
End of assembler dump.

'보안_기타 > ftz' 카테고리의 다른 글

ftz 19  (0) 2024.08.28
ftz 18  (2) 2024.08.27
ftz 17  (0) 2024.08.23
ftz 16  (0) 2024.08.23
ftz 15  (0) 2024.08.22