본문으로 바로가기

해커스쿨 FTZ level8

category Wargame/FTZ 2017. 8. 20. 17:11

level8 --- break the world

 

우선 level8 디렉토리의 hint 파일을 보자.

 

 

 

 

힌트를 보면 shadow 파일에 대해서 알아야하고 용량의 크기를 "2700"이라고 주었는데 우리는 용량의 단위를 모른다. 따라서 이 두가지 사항을 알고 가자.

FTZ training에서 공부해 알겠지만 /etc/passwd 파일의 패스워드 부분은 x로 채워져 있다. 초기 리눅스에서 /etc/passwd 파일의 패스워드 부분에 평문의 형태로 passwd를 기입했지만 보안성 문제로 passwd부분을 x로 표시하고 실제의 암호화된 패스워드는 /etc/shadow 파일에 저장되어 있다. /etc/shadow 파일은 root 계정만 읽을 수 있다.

/etc/passwd 파일에는 계정의 사용환경과 권한에 대한 정보가 들어 있고, /etc/shadow 파일에는 계정의 패스워드와 유효기간에 대한 정보가 들어 있다.

 

/etc/passwd 파일과 /etc/shadow 파일의 권한을 보자

 

 

/etc/passwd 파일은 모든 계정이 읽을 수 있도록 권한이 부여되어 있다. 하지만 /etc/shadow 파일은 root 계정만 읽을 수 있도록 권한이 부여되어 있다. 즉, 패스워드의 유출을 최대한 막겠다는 것이다.

 

/etc/shadow 파일에 저장되는 passwd가 만들어지는 과정을 알아보자. 기본적으로 리눅스 passwd는 단방향 알고리즘으로 복호화 할 수 없다.

 

리눅스의 패스워드는 위와 같이 단방향 해시 알고리즘을 상용해서 암호화한다. 단방향 해시 알고리즘은 단방향이기 때문에 암호문을 알더라도 복화화를 할 수 없다. 하지만 단방향 해시 알고리즘에도 취약점이 존재한다. 동일한 평문은 항상 동일한 암호문을 만들어 낸다는 것이다.

 

이번에는 용량의 단위에 대해 알아보자. find 명령어로 파일을 찾을 때 -size 옵션이 존재한다.

 

또한 숫자 앞에 +와 -부호를 붙이면 해당 사이즈보다 크거나 작은 크기의 파일도 검색할 수 있다.

 

그렇다면 hint를 기반으로 공격할 파일을 찾아보자.

 

 

 

 

의심스러운 /etc/rc.d/found.txt 파일이 있다. 자세히 알아보기 위해 ls -al 명령어로 확인해보면 UID가 root로 설정되어 있고 level8 계정만 읽을 수 있다.

 

 

 

 

/etc/rc.d/found.txt 파일을 보면 leve9에 대한 /etc/shadow 파일이 나온것 처럼 보인다. 즉, 이 파일을 크랙하면 level9의 passwd를 얻을 수 있을것처럼 보인다.

 

크랙을 해보면 level9의 passwd가 apple인 것을 확인할 수 있다.

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

해커스쿨 FTZ level10  (0) 2017.09.02
해커스쿨 FTZ level9  (0) 2017.08.21
해커스쿨 FTZ level7  (0) 2017.08.19
해커스쿨 FTZ level6  (0) 2017.08.17
해커스쿨 FTZ level5  (0) 2017.08.11