728x90

워게임을 풀고 다른 유저의 풀이를 구경하다가 또 하나 배웠습니다 :) 

 

바이너리 파일을 실행시키면, 라이브러리를 사용하고, 이 과정에서 환경변수를 참조합니다.

 

이 과정에서 라이브러리의 환경변수 포인터가 스택 내부를 가르키고 있는 경우도 있죠. (항상 그런건 아닌것같은데 이 부분은 아직 자세하게 모릅니다)

 

이때 LD_PRELOAD라는 개념이 나오는데, 이렇게 로드된 라이브러리는 기존 라이브러리와 중복된 이름의 함수가 있을경우, LD_PRELOAD에 로드된 라이브러리를 우선으로 가져옵니다.

 

(모든 프로그램에 이게 가능하다면 너무 취약하겠죠? 원하는 라이브러리를 가져온다 하면 의도적으로 취약한 라이브러리를 가져올 수 있고, 후킹또한 가능할것입니다.

이를 막기 위한 방법은 setUID 설정입니다. 간단하게 임시적으로 root권한을 주는 기능인데, 이 또한 보안상으로 취약한 부분이 있지만, 넘어가겠습니다.)

 

 

결론!!!

 

??? : pwntool에서, ABC라는 바이너리파일을 libc.so.6라는 특정한 라이브러리로 실행하고 싶습니다.

 

>>

p = process('./ABC', env = {'LD_PRELOAD':'./libc.so.6'})

 

 

 

728x90

'pwnable' 카테고리의 다른 글

libc_base 구하기..?  (0) 2021.04.01
one_gadget  (0) 2021.04.01
ROP(64bit)  (0) 2021.03.31
ROP(32bit)  (0) 2021.03.30
ROP에 대하여  (0) 2021.03.30

+ Recent posts