저번시간에 OverTheWire 리눅스 워게임 사이트에서 level2의 password를 얻었는데 얻은 password를 가지고 로그인을 해봅시다.
로그인 하셨으면 이런 화면이 뜰텐데 바로 ls 명령어를 가지고 현재 디렉터리에 무슨 파일이 있는지 확인해봅시다.
파일명이 spaces in this filename이라고 적혀있네요?? 그럼 우리가 배웠던 cat명령어를 가지고 출력을 해봅시다.
아니 뭐 장난질 하는것도 아니고 맨날 에러를... 읽어보면 공백을 기준으로 파일명을 읽어들이네요...!
쉽게 말해서 spaces라는 파일명 1개, in이라는 파일명 1개, this라는 파일명 1개, filename이라는 파일명 1개로 인식을 하고 OS에서 4개의 파일을 인식을 하네요...그럼 어떻게 해줘야 잘 출력이 될까요??
4개의 파일을 하나로 묶으면 되겠져?? 우리는 C언어를 배웠었는데 C언어에서도 하나의 문자열을 읽어들일 때 ""(큰따옴표)를 쓰는거 아시져?? ex) char str = "Hello World" 이런식으로요...
하지만 큰 따옴표를 가지고 묶어줘도 상관없고, 작은 따옴표를 써도 상관없습니다. 또한 저번 시간에 배웠던 ./ 명령어 기억 하실런지 모르겠지만 모르신다면 여기로가서 다시 읽어주세요! 여러가지 방법이 있으니 우리는 따옴표를 써서 풀어봅시다.
위에 방법은 작은 따옴표를 통한 방법이고, 밑에 두번째는 설명이 조금 필요한데, 리눅스에서 역 슬래쉬의 용도는 쉘이 역슬래쉬를 만나게 되면 역슬래쉬 다음에 나오는 문자를 쉘이 해석을 할 수 없습니다. 즉, spaces 다음에 역슬래쉬가 있는데 in을 쉘이 파일명으로 해석을 하지 않고 그냥 spaces다음에 in이 붙어있네?? 라고 생각하고 넘기는것입니다. 그렇게 filename까지 넘기면 쉘은 아 지금 실행시키는 명령은 현재 디렉토리에 있는 spaces in this filename을 실행시키는것이구나 하고 정상 출력이 되는것입니다. 그럼 다음 시간엔 level3 -> level4로 넘어가보겠습니다 즐거운 하루 되세요!!
'bandit' 카테고리의 다른 글
[OvertheWire] level5 -> level6 (0) | 2022.06.06 |
---|---|
[Overthewire] level4 -> level5 (0) | 2022.06.06 |
[Overthewire] level3 -> level4 (0) | 2021.09.18 |
[Overthewire] level1 -> level2 (0) | 2021.09.14 |
[Overthewire] level 0 ~ level 1 (0) | 2021.09.14 |