본문 바로가기

wargame

[메모리 보호기법]PIE

출처

http://lazenca.net/display/TEC/02.TechNote
https://bpsecblog.wordpress.com/2016/06/10/memory_protect_linux_4/



PIE

PIE (Position Independent Executable)
위치 독립 코드로 이루어진 실행 가능한 바이너리
(위치 독립 코드 : 실행할 때마다 매핑되는 주소가 어디든지에 상관없이 실행되는 파일)
→ 바이너리의 주소를 랜덤화하여 바이너리의 특정 주소의 값을 수정하는 것과 같은 공격을 방어한다.

vi PIE.c



./NoPIE ./PIE

NoPIE를 실행하면 주소가 같다.
PIE를 실행하면 주소가 달라진다.

PIE가 적용되지 않은 바이너리의 경우 코드 영역의 값이 고정된 주소값이다. (printf 함수)


PIE가 적용되지 않은 바이너리의 경우 코드 영역의 값이 고정된 주소 값이 아닌 offset 값(기준점으로부터 떨어진 값)이다. (printf 함수)


라이브러리 함수를 호출할 때 non-PIe에서는 고정된 plt, got 를 이용하여 함수를 호출하지만 PIE는 위치에 독립적인 실행파일, 즉 프로그램을 실행할 때마다 매핑되는 주소가 달라진다.

'wargame' 카테고리의 다른 글

[메모리 보호기법]RELRO  (0) 2019.12.01
[메모리 보호기법]Canaries  (0) 2019.12.01
[메모리 보호기법]ASLR  (0) 2019.12.01
[메모리 보호기법]NX  (0) 2019.12.01
[BOF]simpleBOF  (0) 2019.11.27