Print Stack Canary

HackTricks 지원

출력된 스택 확대

스택 오버플로우 취약한 프로그램이 puts 함수를 스택 오버플로우의 일부를 가리키도록 실행할 수 있는 상황을 상상해보세요. 공격자는 캐너리의 첫 번째 바이트가 널 바이트(\x00)이고 나머지 캐너리는 랜덤 바이트임을 알고 있습니다. 그럼 공격자는 오버플로우를 생성하여 스택을 덮어씌워 캐너리의 첫 번째 바이트만 남도록 할 수 있습니다.

그런 다음, 공격자는 페이로드의 중간에서 puts 기능을 호출하여 캐너리를 모두 출력할 수 있습니다(첫 번째 널 바이트를 제외).

이 정보를 통해 공격자는 캐너리를 알고(동일한 프로그램 세션에서) 새로운 공격을 작성하고 전송할 수 있습니다.

물론, 이 전술은 공격자가 페이로드 내용을 출력하여 캐너리를 유출하고 그 후에 실제 버퍼 오버플로우를 보내기 위해 새로운 페이로드를 생성할 수 있어야 하기 때문에 매우 제한적입니다.

CTF 예시:

임의 읽기

형식 문자열에 의해 제공되는 임의 읽기로 캐너리를 유출할 수 있습니다. 다음 예제를 확인하세요: https://ir0nstone.gitbook.io/notes/types/stack/canaries 및 다음에서 형식 문자열을 남용하여 임의 메모리 주소를 읽는 방법을 읽을 수 있습니다:

HackTricks 지원

Last updated