hacktricks/binary-exploitation/common-binary-protections-and-bypasses/pie
2024-04-07 02:17:55 +00:00
..
bypassing-canary-and-pie.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/aw2 2024-04-07 02:17:55 +00:00
README.md Translated ['README.md', 'binary-exploitation/arbitrary-write-2-exec/aw2 2024-04-07 02:17:55 +00:00

PIE

htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 처음부터 전문가까지 배우세요!

HackTricks를 지원하는 다른 방법:

기본 정보

PIE로 컴파일된 이진 파일 또는 Position Independent Executable프로그램이 실행될 때마다 다른 메모리 위치에서 로드될 수 있어서 하드코딩된 주소를 방지합니다.

이진 파일을 이용한 공격의 핵심은 상대 주소를 이용하는 것입니다. 프로그램의 부분 간 오프셋은 절대 위치가 변경되더라도 동일하게 유지됩니다. PIE 우회를 위해서는 스택과 같은 취약점을 이용하여 일반적으로 하나의 주소를 노출해야 합니다. 한 번 주소를 얻으면 고정된 오프셋을 사용하여 다른 주소를 계산할 수 있습니다.

PIE 이진 파일을 공격할 때 유용한 팁은 메모리 페이지가 무작위화의 단위인 0x1000 바이트 크기로 정렬되기 때문에 기본 주소가 일반적으로 000으로 끝난다는 것입니다. 이 정렬은 올바른 기본 주소가 식별되었는지를 나타내는 중요한 검사가 될 수 있습니다.
또는 이를 이용하여 공격할 수도 있습니다. 주소가 **0x649e1024**에 위치한다는 것을 노출하면 **기본 주소가 0x649e1000**임을 알 수 있고 거기서 함수와 위치의 오프셋을 계산할 수 있습니다.

우회 방법

PIE를 우회하기 위해서는 로드된 이진 파일의 주소를 노출해야 합니다. 이를 위한 몇 가지 옵션이 있습니다:

  • ASLR 비활성화: ASLR이 비활성화되면 PIE로 컴파일된 이진 파일은 항상 동일한 주소에 로드될 것이므로 PIE는 쓸모가 없어집니다. 객체의 주소는 항상 동일한 위치에 있을 것입니다.
  • 노출을 받은 경우 (쉬운 CTF 도전 과제에서 흔함, 이 예제를 확인하세요)
  • 스택에서 올바른 값을 노출할 때까지 EBP 및 EIP 값을 무차별 대입합니다:

{% content-ref url="bypassing-canary-and-pie.md" %} bypassing-canary-and-pie.md {% endcontent-ref %}

참고 자료

htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 처음부터 전문가까지 배우세요!

HackTricks를 지원하는 다른 방법: