완료됨
offset이 다양합니다

writeup을 보니 environ과 $rbp의 offset이 사람마다 차이가 나는 것 같은데
혹시 몰라 저의 코드와, offset이 저와 다른 코드를 실행해보았는데 둘 다 성공적으로 실행이 되었습니다.
offset 설정이 달라도 쉘이 따지는 이유가 무엇일까요?

#pwnable
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1
avatar
qwerty
CTF First Place
avatar
qwerty
CTF First Place

payload를 정확히 알 수 있다면 조금 더 명확한 답변을 드릴 수 있으나, 일반적인 이유를 말씀드리고자 합니다.

일반적으로 stack에 쉘코드를 작성하는 경우 nop-sled라는 기법을 활용합니다. 이를 활용하면 아래와 같은 구조가 됩니다.

rsp         -> 90 90 90 90 90 90 90 90
               90 90 90 90 90 90 90 90
               90 90 90 90 90 90 90 90
               90 90 90 90 90 90 90 90
               90 90 90 90 90 90 90 90
               90 90 90 90 90 90 90 90
                         ...
rsp + 0x100 -> 90 90 90 90 90 90 90 90
                     <shellcode>

이 경우 rsprsp + 0x100사이 위치 어떤 곳에 점프하더라도 쉘코드를 정상적으로 실행할 수 있습니다. 아마 이런 이유로 오프셋이 다를 것으로 예상됩니다.

2024.02.27. 18:30