[Bandit] Level 2 → Level 3
Bandit Level 2 풀이 과정을 설명합니다.
문제
The password for the next level is stored in a file called
--spaces in this filename--located in the home directory
다음 레벨을 위한 password는 홈디렉토리 아래에 존재하는 파일에 있다고 하는데요.
그런데, 파일 이름에 공백을 포함하고 있어 어떻게 읽어야 할 지 알아보아야 할 것 같네요.
해결
ssh 접속 방법에 대해서는 앞으로 생략하도록 하겠습니다.
앞선 단계에서 구한 password를 통해 shell에 접속해줍니다.
ls -al 명령어로 파일과 디렉토리 목록을 확인하니
spaces in this filename라는 이름을 가진 파일을 볼 수 있었는데요.접속한 bandit2 계정으로는 역시나 읽기 권한만 있네요.
바로 읽어보도록 하겠습니다.
이렇게 평소에 쓰던 형태로 입력하게 되면 그런 파일이 없다고 에러가 발생하는데요..
리눅스에서는 공백을 기준으로 구분을 하기 때문에 spaces in this filename 을 그대로 입력하게 되면, 우리가 생각했던 spaces in this filename 이라는 하나의 파일이 아니라
1. spaces 파일
2. in 파일
3. this 파일
4. filename 파일
이렇게 구분해버린답니다. 파일 이름에 공백이 존재할 경우 어떻게 해야 파일을 읽을 수 있을까요?
이번에도 두 가지의 방법으로 해결할 수 있습니다.
1번째는 "" (큰따옴표)를 이용하는 방법과
2번째는 \(역슬래시)를 이용하는 방법이 있습니다.
1. "" (큰따옴표)를 이용하는 방법
큰 따옴표는 묶는 역할을 하는데요.
""속에 파일 이름을 넣어주면 하나로 인식하게 되는 효과가 있습니다.이렇게 사용하면 파일 이름에 공백이 존재하더라도
spaces in this filename을 하나로 인식하기 때문에 원하는 결과를 얻을 수 있습니다.
2. \(역슬래시)를 이용하는 방법
역슬래시는 리눅스에서 다양한 역할을 수행하는데요.
현 문제에 맞는 역할을 찾아보자면 특수 문자를 인식하는 역할이라고 말씀드릴 수 있겠습니다.
현재 문제에서 \공백의 형태를 사용하게 되면, 단어 사이에 공백이 있다는 것을 쉘에게 알려줄 수 있게 됩니다.
TIP!
참고로 리눅스 터미널에서 입력하고자 하는 부분의 일부만 입력한 후 tab키를 눌러주면 자동완성 기능을 수행합니다.
위의 예제로 살펴보면
sp까지만 입력하고tab을 입력하면spaces\ in\ this\ filename를 자동으로 완성시켜 줍니다.그래서 따로 역슬래시나 큰따옴표를 직접 입력하지 않아도 자연스럽게 역슬래시를 입력한 공백처리가 되었습니다.
소소한 tip 이었습니다 ㅎㅎㅎ
핵심
띄어쓰기 된 파일명 읽는 법
1. "space in this filename"
따옴표로 문자열을 묶어준다.
2. space\ in\ this\ filename
띄워쓰기 된 부분에 \를 넣어준다.
\ 뒤에 띄워쓰기를 그대로 진행해야 한다.
댓글
이 글이 마음에 드셨다면 반응이나 댓글을 남겨주세요!
댓글을 작성하려면 로그인하세요

뉴스레터 구독하기
새로운 포스트가 올라오면 이메일로 알려드려요!