objdump(3)
-
[1] 어셈블리 배경지식 / xxd, objdump 명령어 사용법
어셈블러를 하기 전에 알아두어야 하는 것은 ELF 라는 리눅스 실행파일 구조이다 리눅스에서 실행파일들을 ELF 라는 구조를 가지고 파일시그니쳐에 ELF 가 있다 ELF의 형식을 간단히 표현하자면 다음과 같다 [ ELF 구조 ] : 여러개의 섹션들로 나뉘어 진다 1> .text section 명령어가 들어가있는 섹션 - 실행코드가 존재하는 역역 - 읽기전용 - 실행가능한 메모리 영역 - 기계어 코드 ( 0 , 1 ) 이다 2> .rodata section - 읽기만 가능한 데이터이다 3> .data section -읽기,쓰기가 가능한 메모리 영역 - 초기값을 가지는 글로벌 변수 ex) 전역변수 4> .bss 섹션 - 읽기,쓰기가 가능한 메모리 영역 - 초기화 되지 않은 데이터 영역 - 초기값이 없는 글로벌..
2017.10.15 -
[7] PLT / GOT / objdump활용법
[1] PLT ( Procedure Linkage Table )PLT는 일종의 실제 호출 코드를 담고있는 테이블로써 _dl_resolve함수를 통해서 실제 시스템 라이브러리 호출이 이루어진다 [2] GOT ( Global Offset Table )GOT는 PLT가 참조하는 테이블로써 프로시져들의 주소를 가지고 있다PLT가 외부 프로시져를 호출할 때 GOT를 참조해서 해당 주소로 점프한다 ex) 어떤 프로그램에서 printf()함수를 호출한 상황[1] printf()함수를 처음 호출 했을 때 과정1> printf()함수 호출2> PLT로 이동3> dl_resolve()함수 실행4> GOT에 printf()함수의 주소를 저장5> printf()함수의 실제 주소로 점프한다 [2] 다시한번 printf()함수를..
2017.06.14 -
Protostar Stack3 [objdump]
Protostar Stack3번 문제입니다 gdb나 objdump를 이용해서 win()함수가 메모리의 어디에 있는지 확인하랍니다저는 objdump명령어를 사용해보겠습니다 #objdump -d stack3 | grep win -F5 " -d " : stack3을 디스어셈블 하겠다" grep win " : win 이라는 문자열 검색" -F5 " : 찾은 위치의 앞 뒤로 5줄 출력 64바이트만큼 버퍼오버플로우 시킨 후 함수포인터 " fp "의 주소에 win()함수의 주소를 덮어 씌운다그럼 함수포인터 " fp "가 호출 될 때 win()함수가 실행됩니다
2017.06.11