완료됨
익스플로잇 방식 질문
제가 생각한 공격 방식은
- buf 변수에 생성한 shellcode를 read 함수로 덮어씌우고
- buf 주소로 점프
입니다
buf 주소는 $rbp-0x20이고, environ 주소와 차이를 이용하면 되는데
environ 주소와 buf 주소 차이는 0x800000 수준으로 너무 큰 차이가 나서 이상하고,
environ 주소에 존재하는 값(= 환경변수 문자열들이 들어있는 주소)은 buf 주소랑 0x128 차이가 나는데
leak한 environ 주소에 존재하는 값에서 0x128을 뺀 주소(buf 변수의 주소)로 점프하면 쉘코드가 실행될 것으로 보이는데 제 접근 방식이 맞나요?
문제는 저 environ 주소에 존재하는 값을 어떻게 읽어올 수 있을지 모르겠습니다..
지금 할 수 있는건 environ 주소 자체에 숫자를 더하고 뺄 수 있는건데,
그렇게 되면 jump = *(long *)value; 코드 실행 시 value, 즉, environ 주소 자체에 값을 변경하는 거라 jump에 완전 엉뚱한 위치가 들어가버리고..
그렇다고 environ 자체 주소와 buf 변수의 차이인 0x800000 수준의 값을 더하면 정상적으로 실행이 안되네요(왜 안되는지 모르겠지만..)
어느 부분을 잘못 생각하고 있는걸까요?
#pwnable
작성자 정보