🌱초급

[Bandit] Level 2 → Level 3

Bandit Level 2 풀이 과정을 설명합니다.

2분 읽기

문제

The password for the next level is stored in a file called --spaces in this filename-- located in the home directory

  • 다음 레벨을 위한 password는 홈디렉토리 아래에 존재하는 파일에 있다고 하는데요.

  • 그런데, 파일 이름에 공백을 포함하고 있어 어떻게 읽어야 할 지 알아보아야 할 것 같네요.


해결

image.png
  • ssh 접속 방법에 대해서는 앞으로 생략하도록 하겠습니다.

  • 앞선 단계에서 구한 password를 통해 shell에 접속해줍니다.

image.png
  •  ls -al 명령어로 파일과 디렉토리 목록을 확인하니 spaces in this filename 라는 이름을 가진 파일을 볼 수 있었는데요.

  • ​접속한 bandit2 계정으로는 역시나 읽기 권한만 있네요.

  • 바로 읽어보도록 하겠습니다.

image.png
  • 이렇게 평소에 쓰던 형태로 입력하게 되면 그런 파일이 없다고 에러가 발생하는데요..

  • 리눅스에서는 공백을 기준으로 구분을 하기 때문에 spaces in this filename 을 그대로 입력하게 되면, 우리가 생각했던 spaces in this filename 이라는 하나의 파일이 아니라

1. spaces 파일

2. in 파일

3. this 파일

4. filename 파일

  • 이렇게 구분해버린답니다. 파일 이름에 공백이 존재할 경우 어떻게 해야 파일을 읽을 수 있을까요?

  • 이번에도 두 가지의 방법으로 해결할 수 있습니다.

  • 1번째는 "" (큰따옴표)를 이용하는 방법과

  • 2번째는 \(역슬래시)를 이용하는 방법이 있습니다.

1. "" (큰따옴표)를 이용하는 방법

  • 큰 따옴표는 묶는 역할을 하는데요. "" 속에 파일 이름을 넣어주면 하나로 인식하게 되는 효과가 있습니다.

  • 이렇게 사용하면 파일 이름에 공백이 존재하더라도 spaces in this filename을 하나로 인식하기 때문에 원하는 결과를 얻을 수 있습니다.

image.png

2. \(역슬래시)를 이용하는 방법

  • 역슬래시는 리눅스에서 다양한 역할을 수행하는데요.

  • 현 문제에 맞는 역할을 찾아보자면 특수 문자를 인식하는 역할이라고 말씀드릴 수 있겠습니다.

  • 현재 문제에서 \공백의 형태를 사용하게 되면, 단어 사이에 공백이 있다는 것을 쉘에게 알려줄 수 있게 됩니다.

image.png

TIP!

  • 참고로 리눅스 터미널에서 입력하고자 하는 부분의 일부만 입력한 후 tab키를 눌러주면 자동완성 기능을 수행합니다.

  • 위의 예제로 살펴보면 sp까지만 입력하고 tab을 입력하면 spaces\ in\ this\ filename 를 자동으로 완성시켜 줍니다.

  • 그래서 따로 역슬래시나 큰따옴표를 직접 입력하지 않아도 자연스럽게 역슬래시를 입력한 공백처리가 되었습니다.

  • 소소한 tip 이었습니다 ㅎㅎㅎ 


핵심

띄어쓰기 된 파일명 읽는 법

1. "space in this filename"
  • 따옴표로 문자열을 묶어준다.

2. space\ in\ this\ filename
  • 띄워쓰기 된 부분에 \를 넣어준다.

  • \ 뒤에 띄워쓰기를 그대로 진행해야 한다.


댓글

이 글이 마음에 드셨다면 반응이나 댓글을 남겨주세요!

댓글을 작성하려면 로그인하세요

로딩 중...
공유
sikk

sikk

Author

보안을 공부하는 개발자입니다. Web2/Web3 보안과 시스템 해킹에 관심이 많습니다.

뉴스레터 구독하기

새로운 포스트가 올라오면 이메일로 알려드려요!