Layer7 09과제 -9 -F.T.Z level 9 풀이-

2019. 5. 23. 18:42FTZ

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!