mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 13:13:41 +00:00
.. | ||
bypassing-canary-and-pie.md | ||
README.md |
PIE
htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 처음부터 전문가까지 배우세요!
HackTricks를 지원하는 다른 방법:
- 회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드하고 싶다면 구독 요금제를 확인하세요!
- 공식 PEASS & HackTricks 스왜그를 구매하세요
- The PEASS Family를 발견하세요, 당사의 독점 NFTs 컬렉션
- 💬 Discord 그룹 또는 telegram 그룹에 가입하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- 해킹 트릭을 공유하려면 HackTricks 및 HackTricks Cloud github 저장소로 PR을 제출하세요.
기본 정보
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 %}
- 이진 파일의 주소를 노출하기 위해 format string과 같은 임의 읽기 취약점을 사용하여 사용 (예: 이전 기술에서와 같이 스택에서) 이진 파일의 기본을 얻고 거기서 오프셋을 사용합니다. 여기에서 예제를 찾을 수 있습니다.
참고 자료
htARTE (HackTricks AWS Red Team 전문가)로부터 AWS 해킹을 처음부터 전문가까지 배우세요!
HackTricks를 지원하는 다른 방법:
- 회사가 HackTricks에 광고되길 원하거나 HackTricks를 PDF로 다운로드하고 싶다면 구독 요금제를 확인하세요!
- 공식 PEASS & HackTricks 스왜그를 구매하세요
- The PEASS Family를 발견하세요, 당사의 독점 NFTs 컬렉션
- 💬 Discord 그룹 또는 telegram 그룹에 가입하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- 해킹 트릭을 공유하려면 HackTricks 및 HackTricks Cloud github 저장소로 PR을 제출하세요.