티스토리 뷰

plt 나 got 위치는 쉽게 구할 수 있다.


이 글에서 말하고자 하는 것은


printf나 puts 함수들의 name문자열도 메모리에 위치하고 있다.



hyomin@ubuntu:~/baobob/ctf/gadi/pwn/dance_$ objdump -h ./dance


./dance:     file format elf64-x86-64


Sections:

Idx Name          Size      VMA               LMA               File off  Algn

  0 .interp       0000001c  0000000000400238  0000000000400238  00000238  2**0

                  CONTENTS, ALLOC, LOAD, READONLY, DATA

  1 .note.ABI-tag 00000020  0000000000400254  0000000000400254  00000254  2**2

                  CONTENTS, ALLOC, LOAD, READONLY, DATA

  2 .note.gnu.build-id 00000024  0000000000400274  0000000000400274  00000274  2**2

                  CONTENTS, ALLOC, LOAD, READONLY, DATA

  3 .gnu.hash     00000030  0000000000400298  0000000000400298  00000298  2**3

                  CONTENTS, ALLOC, LOAD, READONLY, DATA

  4 .dynsym       00000198  00000000004002c8  00000000004002c8  000002c8  2**3

                  CONTENTS, ALLOC, LOAD, READONLY, DATA

  5 .dynstr       000000b2  0000000000400460  0000000000400460  00000460  2**0

                  CONTENTS, ALLOC, LOAD, READONLY, DATA

  6 .gnu.version  00000022  0000000000400512  0000000000400512  00000512  2**1

                  CONTENTS, ALLOC, LOAD, READONLY, DATA

  7 .gnu.version_r 00000040  0000000000400538  0000000000400538  00000538  2**3

                  CONTENTS, ALLOC, LOAD, READONLY, DATA

  8 .rela.dyn     00000060  0000000000400578  0000000000400578  00000578  2**3

                  CONTENTS, ALLOC, LOAD, READONLY, DATA

  9 .rela.plt     00000120  00000000004005d8  00000000004005d8  000005d8  2**3

                  CONTENTS, ALLOC, LOAD, READONLY, DATA

 10 .init         0000001a  00000000004006f8  00000000004006f8  000006f8  2**2

                  CONTENTS, ALLOC, LOAD, READONLY, CODE

 11 .plt          000000d0  0000000000400720  0000000000400720  00000720  2**4

                  CONTENTS, ALLOC, LOAD, READONLY, CODE

 12 .plt.got      00000008  00000000004007f0  00000000004007f0  000007f0  2**3

                  CONTENTS, ALLOC, LOAD, READONLY, CODE

 13 .text         000004c2  0000000000400800  0000000000400800  00000800  2**4



objdump -h 를 이용하면 각 섹션들의 주소를 구할 수 있다.

5번째 .dynstr 섹션을 보면


함수에서 사용하는 symbol들의 문자열이 들어가 있다.

꿀tip은 fflush가 사용되는 binary에서 뒤에 sh부분을 이용하여 system의 인자로 넘겨서 shell을 얻을 수 있다.


이 주소를 인자로 넘겨주면 된다.


'pwnable > 정리' 카테고리의 다른 글

mprotect를 이용한 rop  (0) 2018.08.19
socat 으로 바이너리 돌리기  (0) 2018.08.19
libc database 사용법  (0) 2018.08.05
64bit syscall table  (0) 2018.08.05
gcc 컴파일 옵션  (0) 2018.08.04
Comments