6

Overflow 실습 질문

다음 강의의 https://dreamhack.io/learn/6/64#8 부분을 보면 카나리의 첫 부분은 널 바이트라고 되어 있는데
이 실습에서는 카나리의 첫 부분이 널 바이트가 아니라서 페이로드에 +1을 해줄 필요가 없습니다(https://dreamhack.io/learn/6/64#8에서는 b"A"*(buf2cnry+1)을 해주고 있습니다.) 그래서 카나리도 8개의 문자로 나옵니다.
카나리의 첫 바이트가 널이 아닐 수 있는 것인지 아니면 다음 강의를 제가 잘못 이해한 것인지 이 실습이 오류인 건지 궁금합니다.

2 answers
3

다른 환경에서는 모르겠으나 리눅스의 경우 카나리가 언제나 \x00로 시작하는 것이 맞을 겁니다.

실습이 어떤 것을 말씀하시는 것인지 정확히 모르겠습니다만, 카나리를 유출하고 16진수로 표시하면 값이 반전되어서 가장 뒤에 \x00가 오기 때문에 헷갈리신게 아닐까 합니다.

1

안녕하세요, 기존에는 카나리를 가시적으로 보여주기 위해 값을 아스키 범위로만 지정해 두었었습니다. 다만 혼돈의 여지가 있기 때문에 맨 앞 바이트는 NULL을 가지도록 패치하였습니다 !