문제
- Level 9. The password for the next level is stored in the file data.txt in one of the few human-readable strings, preceded by several ‘=’ characters.
- Level 10.The password for the next level is stored in the file data.txt, which contains base64 encoded data
풀이
level 9 는.... 솔직히 말해서 정확한 풀이법을 모르겠어서.. 좀 알아봤습니다..(정답은 찾았지만 그래도 좀 더 완벽하게..ㅠㅠ)
level 10의 data.txt 파일은 매우 지저분한 파일형태로 존재합니다.(binary 파일?!)
그래서 여러 시도를 해봤는데, 모두 실패하게되어 결국 파일에서 텍스트를 찾아내서 풀긴했습니다ㅠㅠ
하지만! level 9의 문제의 풀이법은 생각보다 단순하게 "사람이 읽을 수 있는 문자만 추출!" 입니다.
그 방법으로는 리눅스의 strings를 이용할게요!
level 10은 인코딩된 base64 파일에서 패스워드를 찾을 수 있다는 정보를 얻었습니다.
그렇다면 인코딩된 것을 어떻게하면 좋을까요?!
정답입니다! 바로 디코딩하며 패스워드를 추출할 수 있습니다
명령어는 base64를 사용하도록 할게요!
리눅스 strings 명령어
윽... 아래처럼 매우 알 수 없는 문자들이 가득합니다.
우리는 strings를 이용해서 읽기가 가능한 문자열만 따오도록 해보죠!
strings 사용법
strings [파일명]
그럼 이제 아래처럼 입력을 해보세요!
두가지 모두 같은 의미이니 사용하고 싶은 방법으로 해주시면 됩니다!
cat data.txt | strings | grep '='
strings data.txt | grep '='
여기서 =====이 여러개 있는 부분만을 추출한다면 더 깔끔해지지 않을까요?
이렇게 level9는 해결할 수 있었습니다!
리눅스 base64 명령어
base64 명령어는 파일을 인코딩 또는 디코딩 할 수 있는 명령어입니다. 옵션 설정을 안하면 인코딩을 해줍니다!
일단은 딱 두가지만 알아도 될 것 같아요!
base64 사용법
base64 [옵션] [파일명]
base64 옵션 종류
- default : 인코딩
- -d : 디코딩
우리는 디코딩을 해야하기때문에 -d 옵션을 이용하도록 할게요! (인코딩을 하게 되면 인코딩된 것을 또 인코딩하기에 이상한 답이 나옵니다!)
cat data.txt | base64 -d
더보기를 눌러 비밀번호를 확인하세요!
비밀번호는 다음과 같다
Level9. G7w8LIi6J3kTb8A7j9LgrywtEUlyyp6s
Level10. 6zPeziLdR2RKNdNYFNb6nVCKzphlXHBM
'Bandit' 카테고리의 다른 글
리눅스 압축 풀기 gzip, tar, bzip2 | Bandit Level 12 -> Level 13 (0) | 2023.08.31 |
---|---|
리눅스 문자 변환, 삭제 명령어 tr | Bandit Level 11 -> Level 12 (0) | 2023.08.31 |
Bandit Level 8 -> Level 9 | 리눅스 중복 단어 제거 sort, uniq (0) | 2023.08.30 |
Bandit Level 7 -> Level 8 | 리눅스 특정 단어 찾기 vi, grep (0) | 2023.08.30 |
Bandit Level 6 -> Level 7 - 리눅스 특정 파일명 검색 (0) | 2023.08.28 |