FTZ level17 포인터 변조 2

2017. 5. 28. 14:29SystemHacking/FTZ

 

 

 

level17번 문제입니다. 힌트를 봐보겠습니다


< 그림 17.1 >


이번 문제에서는 level16번 문제와 선언된 변수들과 스택의 구조가 모두 똑같습니다

다른 점은 level16에 있던 shell()함수가 없다는 것입니다. 따라서 우리가 직접 환경변수에 쉘 생성코드를 작성해서 주소를 구합니다

그리고 포인터 call 을 환경변수의 주소로 초기화 시켜주면 call() 함수가 실행될 때 쉘이 떨어지게 될것입니다

쉘을 생성하는 코드는 따로 정리해놓았습니다. 아래 링크를 들어가시면 됩니다

쉘 생성코드 작성법 << 여기


에그쉘을 이용해서 쉘코드를 환경변수에 저장시키고 환경변수의 주소를 얻어오겠습니다

에그쉘 작성법 및 사용방법  << 여기를 참고하세요



< 그림 17.2 >


" /tmp/eggshell " : 에그쉘파일

" /tmp/realaddr " : 실제 환경변수의 주소구하는 파일


40byte만큼 버퍼오버플로우시켜서 call()함수의 주소공간에 접근했고, 해당 주소공간에 환경변수의 주소를 덮어씌웁니다

그럼 call 포인터함수가 실행될 때 쉘이 떨어지게 됩니다


해당 문제의 gdb분석과 스택의 구조는 level16에서 설명해 놓았습니다.


level18번 문제로 넘어가도록 하겠습니다


'SystemHacking > FTZ' 카테고리의 다른 글

FTZ level19 Return to Libc  (0) 2017.05.30
FTZ level18 포인터 특성 활용  (0) 2017.05.28
FTZ level16 포인터 변조 1  (0) 2017.05.23
FTZ level15 분기 루틴 2  (0) 2017.05.23
FTZ level14 분기루틴 1  (0) 2017.05.23