Bandit

Bandit Level 9 -> Level 10 -> level 11 | 리눅스 문자만 추출 strings, base64 인코딩

developerYoung 2023. 8. 31. 00:25
반응형

문제

  1. 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.
  2. 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 '='

strings 명령어 사용

여기서 =====이 여러개 있는 부분만을 추출한다면 더 깔끔해지지 않을까요?

 

bandit level10 패스워드 답

이렇게 level9는 해결할 수 있었습니다!

 

반응형

리눅스 base64 명령어

base64 명령어는 파일을 인코딩 또는 디코딩 할 수 있는 명령어입니다. 옵션 설정을 안하면 인코딩을 해줍니다!

일단은 딱 두가지만 알아도 될 것 같아요! 

base64 사용법

base64 [옵션] [파일명]

base64 옵션 종류

  • default : 인코딩
  • -d : 디코딩

 

우리는 디코딩을 해야하기때문에 -d 옵션을 이용하도록 할게요! (인코딩을 하게 되면 인코딩된 것을 또 인코딩하기에 이상한 답이 나옵니다!)

 

 cat data.txt | base64 -d

 

level11 패스워드 답


 

더보기를 눌러 비밀번호를 확인하세요!

더보기

비밀번호는 다음과 같다

Level9. G7w8LIi6J3kTb8A7j9LgrywtEUlyyp6s

Level10. 6zPeziLdR2RKNdNYFNb6nVCKzphlXHBM

 

 

반응형