plt 2

컴퓨터 시스템 라이브러리란(Library - Static Link vs. Dynamic Link)

라이브러리 - 라이브러리는 컴퓨터 시스템에서, 프로그램들이 함수나, 변수를 공유해서 사용할 수 있게함 - 다수의 프로그램들은 서로 공통으로 사용하는 함수들이 많다. C언어를 비롯하여 많은 컴파일 언어들은 자주 사용되는 함수들의 정의를 묶어서 하나의 라이브러리 파일로 만들고 여러 프로그램 파일이 공유해서 사용할 수 있도록 재원. 링크 링크는 많은 프로그래밍 언어에서 컴파일 마지막 단계, 프로그램에서 어떤 라이브러리 함수를 사용한다면, 호출된 함수와 실제 함수의 링크 과정에서 연결된다. 리눅스에서 C 소스 코드는 전처리, 컴파일, 어셈블 과정을 거쳐서 ELF형식을 갖춘 오브젝트 파일로 번역된다. 오브젝트 파일은 실행 가능한 형식은 갖추고 있지만 라이브러리 함수들의 정의가 어디 있는지 알지 못하므로 실행은 불..

[pwnable] 시스템 해킹 ProtoStar - Stack5 (PLT, GOT)

이전에 풀었던 5번을 다른 방식으로 푼다. 바로 PLT, GOT를 이용한 풀이이다. PLT와 GOT란? PLT(procedure Linkage Table) : 외부 프로시저를 연결해주는 테이블, PLT를 통해 다른 라이브러리에 있는 프로시저를 호출 할 수 있다. GOT(Global Offset Table) : PLT가 참조하는 테이블, 프로시저들의 주소가 들어있다. 함수 호출(PLT) -> GOT (실제 함수의 주소가 저장) -> 처음일 때 -> 어떤 과정으로 주소를 가져옴 (생략) 함수 호출(PLT) -> GOT (실제 함수의 주소가 저장) -> 두 번째 -> 첫 번째 호출에서 알아낸 주소 참고) https://bpsecblog.wordpress.com/2016/03/07/about_got_plt_1/..