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 |