함수 실행 순서

read(0, buf, 0x400);
write(1, buf, sizeof(buf));

read_got와 puts_plt를 통해 read의 got를 출력해서 leak 시키는 페이로드를 만들고 버퍼오버플로우를 통해
ret에 저장시키면 출력하면서 가져올 수 있는데요
read의 got값 출력보다 write의 출력이 먼저 수행되는 이유가 궁금합니다

#pwnable
작성자 정보
답변 2
avatar
Rasser
워게임: 20

정확히 어느부분에서 이해가 안되시는건가요?

아니면 코드의 일부분을 첨부해주셔서 알려주시면 답변해드리겠습니다

현재의 글에서는 read 함수를 이용해서 buf에 0x400만큼 입력 받고, write 함수를 이용하여 buf을 출력하는 코드가 보입니다

2022.07.27. 23:49
avatar
wyv3rn
무플 방지 위원회장

조금 혼선이 있으신 것 같습니다.

코드 상 흐름 자체가
read로 값을 받고
write로 값을 출력하고
이후에 공격 코드에 따라 흐름이 이어집니다.

말씀하신 것과 같이 read의 got 출력보다 write 값 출력이 먼저라는 것은 코드 내의 write를 말씀하시는 것 같습니다.

2022.07.28. 16:24
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기