FTZ level17 포인터 변조 2
2017. 5. 28. 14:29ㆍSystemHacking/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 |