일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 금별맥주
- apollo react native
- useMutation error
- graphql with reactnative
- 고르드
- 운정 소바동
- 비동기배열처리방법
- 예쁜술집 예술
- 도그존
- 잠실새내 도그존
- typescript
- 잠실새내
- graphql mutation error
- apolloclient
- 앙버터마카롱
- 토라비
- 화이트 해커를 위한 웹 해킹의 기술
- 홍대 카페 장쌤
- 비동기배열
- graphql with RN
- 신촌 소문난집
- graphql 400
- promise메서드
- 화이트해커를 위한 웹 해킹의 기술
- 지보싶 신촌점
- graphql react native
- 홍대 토라비
- graphql
- promise처리
- 홍대 예술
- Today
- Total
yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆
FTZ level8 풀이 본문
id: level8
pw: break the world
로그인 후 디렉토리 확인
hint를 읽어보자
일단 shadow파일이 존재하고 그 용량이 2700이라고 했으니
size가 2700byte인 파일을 찾아보자!
우리는 그 파일을 찾아 암호화된 패스워드를 복호화해서 패스워드를 알아내는 것이 최종 목표!
(find / -size 2700c 2> dev/null)
2700뒤에 붙는 c는 byte 단위를 의미한다.
c 외에도 b-512byte(블록) w-2byte k-kbyte 가 있다.
shadow 파일??
리눅스 시스템은 암호화된 패스워드를 포함해서 사용자 계정 정보를 /etc/passwd 디렉토리에 보관한다.
그러나 /etc/passwd의 파일은 수정은 못하지만 누구나 볼 수 있다.
shadow 패스워드는 /etc/passwd에 있는 password 부분을 /etc/shadow에 두고 root만 읽을 수 있는 권한으로 설정한다. => shadow파일은 root만 읽을 수 있다
따라서 shadow파일은 암호화된 패스워드가 저장된 파일
find 명령어 수행 결과 4가지 파일이 나왔다.
아마도 우리가 사용할 것은 /etc/rc.d에 존재하는 found.txt 파일인 것 같다.
/etc/rc.d 로 이동해서 found.txt 정보를 불러왔는데 루트 권한으로만 설정되어있고 아무것도 없었다.
found.txt를 읽을 수는 있어서 cat 명령어를 이용해 found.txt를 읽어보자
shadow 파일 내용이 출력되었다.
shadow 파일은 크래킹 툴이 따로 필요하다고 해서 구글링 해보았다.
존 더 리퍼라는 shadow 파일 크래킹 툴이 있었고, 이를 이용해서 level9의 pw를 얻어볼 것이다.
존 더 리퍼 깔기 --->https://www.openwall.com/john/
존 더 리퍼를 깔아서 알집 해제한 후, 해제된 파일 중 john.exe가 위치한 곳에 shadow.txt 파일을 만들어 준다. (windows10에 다운받았다.)
(run 파일 안에 john 실행파일이 있고 여기에 john_shadow.txt를 만들어준다!)
john_shadow.txt 안에는 found.txt의 내용을 복사 붙여넣기해서 저장한다.
이제 cmd를 열고 존 더 리퍼 실행파일이 있는 위치로 이동한다.
이동한 후에 다음과 같은 명령어를 입력해서 shadow파일을 크래킹한다!
john [크래킹하려는 파일] -show
level9:apple:11040:0:99999:7:-1:-1:134549524 가 출력되었다!
우리가 원하는 level9의 pw는 apple이다!
왜 apple이 pw일까?
그림은 shadow의 구조를 나타낸 것이다.
구조에서 우리가 눈여겨 볼 부분은 (2) 패스워드를 암호화한 값이다.
(2)를 좀 더 분석해보면
첫번째 부분은 hash id로 어떤 hash scheme을 사용했는지 나타낸다.
두번째 부분은 salt로 패스워드를 hash하기 위해 OS가 생성하는 임의의 값이다. (이게 없으면 hash value를 복호화할 수 없다!)
마지막 부분은 hash value로 hash id의 해시 방법과 salt를 가지고 hash한 결과 값 이다.
즉, 이게 암호화된 pw인 것이다.
따라서 복호화를 진행했을 때 다른 자리는 값이 변하지 않지만
원래 암호화된 값이 있었던 (2)자리에는 패스워드로 값이 변하게 된다.
level9의 pw: "apple"
'wargame 풀이 > FTZ' 카테고리의 다른 글
FTZ level10 풀이 (0) | 2020.09.20 |
---|---|
FTZ level9 풀이 (0) | 2020.09.18 |
FTZ level7 풀이 (0) | 2020.09.16 |
FTZ level6 풀이 (0) | 2020.09.15 |
FTZ level5 풀이 (0) | 2020.09.14 |