FTZ (Free Training Zone) level8
1. 환경 : window10
2. VM, Red Hat Linux 9.0, putty
id : level9
pw : apple
1. cat hint를 사용하여 힌트를 확인한다.
2. 코드 분석
1) Char Buf2[10] 의 공간에 10이라는 공간을 준다
2) Char Buf [10] 라는 공간에 10이라는 공간을 준다.
3) feget() 은 (scanf와 같은 역할이다 ) 어떤 값을 입력 받는다.
(글자수 제한이 없는 bof취약점을 이용한다.)
4)strcmp 두개의 글자를 비교한다 같으면 0을 반환 앞에 단어가 사전에 먼저 나요면 -1을 반환한다.
(level9에서는 buf2공간과 “go”글자를 비교)
3. 공격방법
1) Buf의 공간에 넘치는 값을 입력하여 buf2의 공간을 침범시킨다. (여기서 한글자당 1byte 이다. (10공간중 1에 해당) )
2) Buf와 buf2사이의 dummy값이 얼마인지 모르기 때문에 go를 무작위로 많이 대입시킨다.
3) Buf2라는 공간에 go라는 단어가 침범하고 strcmp라는 함수가 정상적으로 buf2와 “go”를 비교하여
goodluck을 출력하고 level10의 /bin/bash를 실행시킨다.
/*
4. 전달
feget함수의 bof취약점을 이용하는 것은 동일하지만 "go"를 직접 입력하지 않고
넘겨주는 방법입니다.
'Study > ftz' 카테고리의 다른 글
FTZ level11 (0) | 2016.07.12 |
---|---|
FTZ level10 (0) | 2016.06.23 |
FTZ level8 (0) | 2016.06.22 |
FTZ level7 (0) | 2016.06.21 |
FTZ level6 (0) | 2016.06.21 |
댓글