완료됨
offset이 다양합니다
writeup을 보니 environ과 $rbp의 offset이 사람마다 차이가 나는 것 같은데
혹시 몰라 저의 코드와, offset이 저와 다른 코드를 실행해보았는데 둘 다 성공적으로 실행이 되었습니다.
offset 설정이 달라도 쉘이 따지는 이유가 무엇일까요?
#pwnable
작성자 정보
답변
1
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>
이 경우 rsp
와 rsp + 0x100
사이 위치 어떤 곳에 점프하더라도 쉘코드를 정상적으로 실행할 수 있습니다. 아마 이런 이유로 오프셋이 다를 것으로 예상됩니다.