함수 실행 순서
read(0, buf, 0x400);
write(1, buf, sizeof(buf));
read_got와 puts_plt를 통해 read의 got를 출력해서 leak 시키는 페이로드를 만들고 버퍼오버플로우를 통해
ret에 저장시키면 출력하면서 가져올 수 있는데요
read의 got값 출력보다 write의 출력이 먼저 수행되는 이유가 궁금합니다
#pwnable
작성자 정보
답변
2
Rasser
워게임: 20
정확히 어느부분에서 이해가 안되시는건가요?
아니면 코드의 일부분을 첨부해주셔서 알려주시면 답변해드리겠습니다
현재의 글에서는 read 함수를 이용해서 buf에 0x400만큼 입력 받고, write 함수를 이용하여 buf을 출력하는 코드가 보입니다
wyv3rn
무플 방지 위원회장
조금 혼선이 있으신 것 같습니다.
코드 상 흐름 자체가
read로 값을 받고
write로 값을 출력하고
이후에 공격 코드에 따라 흐름이 이어집니다.
말씀하신 것과 같이 read의 got 출력보다 write 값 출력이 먼저라는 것은 코드 내의 write를 말씀하시는 것 같습니다.