Pwnable/탐구

libc를 통한 스택주소 릭 방법

ICEB34R 2018. 12. 31. 22:34

libc를 통해 스택주소를 얻어내는 방법이 있다고 얼핏 들은적이 있었습니다.


오늘은 그것을 알아내는 방법에 대한 글입니다.


우선 http://researchport.tistory.com/43 여기의 글을 참고했다고 밝힙니다.



libc.so.6을 IDA로 보면 __environ이라는 영역이있습니다.


이 부분은 어떨때 사용되나 봤더니

getenv함수를 호출할때 사용된다던지 _libc_start_main에서도 사용이 되는 것을 확인했습니다.


결론적으로는 저 environ이라는 포인터 안에는 환경변수들이 로드되는 주소가 담겨있습니다.


0x7ffff7ffe100이라는 포인터 안의 값은

0x7fffffffe358이라는 스택의 값을 가르키고 있고


그 안에는 환경변수의 테이블들이 있어 환경변수를 가르키고있습니다.  

따라서 해당값을 릭을 했다면 offset을 계산을 통해 스택이 로드된 주소를 알 수 있습니다.