Got(3)
-
Pwndbg 동적 디버깅으로 RTL 32bit, RTL 64bit 풀기 - Ubuntu Linux
- RTL 32bit 풀이 이 문제에서는 아래와 같이 rtl32_1이라는 실행파일이 주어집니다. memset() 함수로 buf를 정리해주고, printf()로 "Input me : "라는 문자열을 출력해줍니다. 다음 줄에서 read() 함수로 0x58(10진수로 88)만큼 buf를 입력받습니다. 그런데 위에서 선언된 buf를 보면 크기가 0x48(10진수로 72)이므로, 이 부분에서 BOF가 일어난다는걸 알 수 있습니다. payload를 구상해보면 'a'를 buf 크기(0x48)만큼 + sfp 4 + system + dummy 4 + /bin/sh 정도로 구성 될 것 같습니다. system과 /bin/sh를 어떻게 실행시켜야할까....하고 고민하다가 IDA로 파일 안에 있는 모든 문자열을 열어보았습니다...
2021.07.19 -
PLT와 GOT
- PLT란? PLT는 *Procedure Linkage Table의 약자입니다. 파일 내부가 아닌 다른 외부 *라이브러리의 함수를 호출할 때 연결을 해주는 테이블입니다. * 리턴 값이 없는 함수 * 소프트웨어를 개발할 때 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임 이렇게 정의만 말하면 조금 어렵게 느껴질 수도 있습니다. 추가적인 설명과 함께 예시를 들어보겠습니다. 우선 PLT가 필요한 상황과 필요하지 않은 상황이 있습니다. Dynamic Link를 할 때는 PLT가 필요하고, Static Link를 할 때는 PLT가 필요하지 않습니다. 그 이유는 무엇일까요? Static Link는 Link 단계에서 라이브러리를 바이너리에 포함시킵니다. 그 말인 즉슨, 별도의 외부 파일이나 라이브러리가 없어도 실행..
2021.07.17 -
ELF 파일 구조
- ELF 파일 실행 가능한 바이너리, 오브젝트 파일의 형식을 규정한 파일. 여기서 ELF는 Executable and Linkable Format의 약자입니다. (실행, 링킹이 가능한 포멧) ELF 파일은 ELF 헤더, 프로그램 헤더 테이블, 섹션 헤더 테이블로 이루어져있습니다. ELF 헤더는 ELF 파일의 구성을 나타내는 부분입니다. 파일의 가장 첫 부분을 차지하며, 파일의 특성을 알 수 있는 아주 중요한 부분입니다. 프로그램 헤더 테이블은 ELF 안의 *세그먼트들에 대한 정보들로 * 런타임 중에 사용될 메모리 정보 프로세스 이미지를 어떻게 구현해야 할지 나와있는 부분입니다. *섹션 헤더 테이블은 ELF 안에 있는 섹션들에 대한 정보들을 모아둔 부분입니다. * 실행 파일의 정보가 담긴 공간 - ELF..
2021.06.02