Layer7 09과제 -9 -F.T.Z level 9 풀이-
2019. 5. 23. 18:42ㆍFTZ
level 8에서 얻은 비밀번호를 이용하여 로그인를 한 후
어떤 파일이 있는지 확인하기 위해 ls 명령어를 사용한다.
cat hint의 내용이다.
뭔가 좀 이상하지 않은가?
값을 받는 변수는 buf[10] 변수인데
값을 검사하는 부분이 buf2 변수를 검사한다.
또한, 메모리의 값이 작아 조금만 값을 넘어가면 오버플로우가 날 수 있다.
맞다. 이 문제는 이 오버플로우를 이용하여 문제를 푼다.
먼저 buf2[10]이 buf[10]보다 먼저 할당 되었으므로
buf에 buf가 저장할 수 있는 사이즈[10] 보다 큰 값을 받으면 buf2로 넘어가서 덮어씌워지게 된다.
우리의 목표는 buf2가 "go"가 되는 것이다.
새로 hello.c라는 파일을 만들어주고, bof 파일을 복사해줍니다.
만든 파일을 컴파일 해줍니다.
[ebp-40] 부분 문자열을 입력받고 [ebp-24]에서 문자열을 비교한다.
[ebp-24] 부분에서 buf2를 비교하니깐 buf2의 위치는 24가 될것이다!
그리고 [ebp-40]은 buf가 되는 것이다.
둘의 거리 차이는 40-24=16
그럼 우리는 buf에 16 byte 만큼의 값을 넣어준 뒤
그 뒤에 go를 붙여주면 buf2는 go가 될것이다.
이렇게 하면 왼쪽 level10의 권한을 가지게 되고, my-pass를 써서 비밀번호를 알아내면
다음과 같이 나온다.
level10 pw: interesting to hack!
'FTZ' 카테고리의 다른 글
Layer7 11과제 -F.T.Z level 11 풀이- (0) | 2019.05.31 |
---|---|
Layer7 09과제 -10 -F.T.Z level 10 풀이- (0) | 2019.05.23 |
Layer7 09과제 -8 -F.T.Z level 8 풀이- (0) | 2019.05.23 |
Layer7 09과제 -6 -F.T.Z level 6 풀이- (0) | 2019.05.23 |
Layer7 09과제 -5 -F.T.Z level 5 풀이- (0) | 2019.05.23 |