Ret2ret & Reo2pop

htARTE (HackTricks AWS Red Team Expert)에서 **제로부터 히어로까지 AWS 해킹 배우기**!

다른 방법으로 HackTricks를 지원하는 방법:

Ret2ret

이 기술의 주요 목표스택 내에 있는 기존 포인터를 악용하여 ASLR을 우회하는 것입니다.

기본적으로 스택 오버플로우는 보통 문자열에 의해 발생하며, 문자열은 메모리의 끝에 널 바이트로 끝납니다. 이를 통해 스택에 이미 존재하는 포인터가 가리키는 위치를 줄일 수 있습니다. 따라서 스택에 0xbfffffdd가 포함되어 있다면, 이 오버플로우는 0xbfffff00으로 변환될 수 있습니다 (마지막으로 0으로 된 바이트에 주목).

만약 해당 주소가 스택 내의 셸코드를 가리킨다면, ret 명령어에 주소를 추가하여 이 명령이 도달할 때까지 흐름을 해당 주소로 이동시킬 수 있습니다.

따라서 공격은 다음과 같을 것입니다:

  • NOP 슬레드

  • 셸코드

  • 스택을 EIP에서 ret 주소로 덮어쓰기 (RET 슬레드)

  • 스트링에 의해 추가된 0x00이 스택의 주소를 수정하여 NOP 슬레드를 가리키도록 만듭니다.

이 링크에서 취약한 이진 파일의 예제를 볼 수 있으며, 이 링크에서 exploit을 확인할 수 있습니다.

Ret2pop

스택 내에서 수정하고 싶지 않은 완벽한 포인터를 찾을 수 있다면 (ret2ret에서는 최종 최하위 바이트를 0x00으로 변경했습니다), 같은 ret2ret 공격을 수행할 수 있지만 RET 슬레드의 길이를 1만큼 줄여야 합니다 (따라서 최종 0x00이 완벽한 포인터 바로 이전 데이터를 덮어씁니다), 그리고 RET 슬레드의 마지막 주소는 pop <reg>; ret를 가리켜야 합니다. 이렇게 하면 완벽한 포인터 앞의 데이터가 스택에서 제거됩니다 (0x00에 영향을 받는 데이터) 그리고 최종 ret가 어떠한 변경도 없이 스택 내의 완벽한 주소를 가리키게 됩니다.

이 링크에서 취약한 이진 파일의 예제를 볼 수 있으며, 이 링크에서 exploit을 확인할 수 있습니다.

References

htARTE (HackTricks AWS Red Team Expert)에서 **제로부터 히어로까지 AWS 해킹 배우기**!

다른 방법으로 HackTricks를 지원하는 방법:

Last updated