Level 8로 로그인해서 hint 파일을 열어보면 다음과 같은 힌트를 얻을 수 있다.
용량이 정확하게 2700인 파일은 많지 않을것이라 생각하고, find 명령어와 옵션을 이용해서 이 파일을 찾아보도록 하자.
다음과 같이 find / -size 2700c 2> /dev/null 명령어를 사용하면 다음 옵션들이 조합되어 실행된다
1. 루트에서부터
2. 사이즈가 2700c(= 2700바이트)인 파일을 찾는다
3. 표준 에러일 경우(2>)
4. 화면이 아닌 /dev/null 에 저장한다
결과는 다음과 같이 /etc/rc.d/found.txt라는 파일을 찾을 수 있었다. 해당 파일을 열어보면 다음과 같이 shadow 형태의 내용이 들어있는 것을 알 수 있다.
shadow 파일은 /etc/passwd에서 암호화한 패스워드부분을 shadow에서 읽을 수 있도록 저장되어있는 내용이다.
구조는 다음과 같다
[유저 네임] : [암호화된 패스워드] : [마지막으로 변경된 날짜] : [비밀번호 최소 사용 기간] : [비밀번호 최대 사용 기간] : [비밀번호 만기 전 경고메세지를 전하는 일 수] : [로그인 접근 차단 일 수] : 등.
즉, 두번째 구역에 있는 부분이 우리가 알아봐야 할 부분이다.
암호화된 패스워드는 다음과 같은 구조를 가진다.
$HashID$Salt$HashValue
앞의 HashID는 어떤 스키마를 이용하여 해시함수를 처리했는지 보여주는 값이다.
Identifier | Scheme |
1 | MD5 |
2a | Blowfish |
md5 | MD5 |
5 | SHA-crypt(SHA-256) |
6 | SHA-crypt(SHA-512) |
salt는 해시를 하기 전에 참고할 값을 의미한다.
HashValue에서는 앞 두가지 값을 가지고 어떤 결과값이 나오는지 보여준다. 즉, 보여지는 level9의 섀도우는 아래와 같은 구조로 나눌 수 있다.
HashID | 1 (MD5-crypt) |
Salt | vkY6sSlG |
HashValue | 6RyUXtNMEVGsfY7Xf0wps. |
레인보우 테이블을 이용하면 salt를 가지고 있기 때문에 해당 해시를 풀 수 있을거라 생각했다.
"John The Ripper" 라는 유닉스 패스워드 크랙 툴이 존재하는데, FTZ 서버에는 설치되어있지 않아보였다. 칼리에는 기본적으로 이 툴이 깔려 있어, 보이는 level9 shadow 파일을 kali로 옮겨 패스워드 크래킹을 진행해보기로 했다.
다음과 같이 level9의 shadow를 넣고, 그 파일을 툴로 돌렸더니 바로 apple이라는 비밀번호가 나오는 것을 확인할 수 있었다.
'Write-Up > FTZ' 카테고리의 다른 글
FTZ: Level 10 - writeup 수정중 (해결완료) (0) | 2019.11.12 |
---|---|
FTZ: Level 9 (0) | 2019.11.12 |
FTZ: Level 7 (0) | 2019.09.26 |
FTZ: Level6 (0) | 2019.09.26 |
FTZ: Level 5 (0) | 2019.09.19 |