완료됨
원격으로는 왜 안될까요?
똑같은 코드인데 로컬에서는 쉘 실행이 잘되는데 원격으로는 안되네요 ㅠㅠ
서버 libc 버전도 확인해보니 libc-2.31.so 였는데요.
read 함수 offset는 130 으로 끝나고 system 함수 offset은 410으로 끝나는 버전이었습니다.
디버깅해보니까 로컬에서 성공할때는 read는 130 system 410이 맞는데
원격에서는 read 140 system 420으로 끝나네요. 근데 원인을 전혀 모르겠어요 같은 코드고 서버로 준 값도 똑같은데 도대체 왜...??
- 성공했을때
[+] read: 0x7f8a02e90130
[+] libc base: 0x7f8a02d7f000
[+] system: 0x7f8a02dd4410
2)실패했을때
[+] read: 0x7f59d9bae140
[+] libc base: 0x7f59d9a9d010
[+] system: 0x7f59d9af2420
#pwnable
작성자 정보
답변
5
[+] read: 0x7f59d9bae140
[+] libc base: 0x7f59d9a9d010
[+] system: 0x7f59d9af2420
나온대로라면 read 함수 주소는 140으로 끝나는데요..?
버전이 같아보여도 오프셋이 살짝 다른 경우가 꽤 있습니다. 일단 read 함수 주소에서 0x10만큼을 더빼서 해보세요. libc base 주소는 항상 000으로 끝나기 때문에 출력 결과만 보았을때는 0x10 만큼 더 빼서 해보면 될 수도 있을 것 같습니다.
예제 익스플로잇 코드는 로컬의 libc를 참조하여 오프셋을 계산하기 때문에 그대로 복사하셔서 실행하셔도 제대로 안될겁니다.
blackbearwow
대표 업적 없음
blackbearwow
대표 업적 없음
"서버 libc 버전도 확인해보니 libc-2.31.so 였는데요."
이거 어떻게 확인하셨나요? 너무 궁금해요 ㅠ