[bandit] level 32 -> level 33
로그인 하자마자 UPPERCASE SHELL이 뜬다. ls를 입력하였더니 대문자로 변환된다. (LS)
쉘 자체가 원래 대문자로 변환되는 시스템이 아닌, 입력한 문자값을 대문자로 변환하는 프로그램이 실행 중인 것 같다.
이를 해결하기 위해선 문자로 구분되지 않는 숫자나 특수문자 등을 사용해야한다.
리눅스에서는 쉘 명을 비롯한 쉘에 대한 정보를 $0 ~ $9로 표현할 수 있다.
$$ : 쉘의 프로세스 번호
$0 : 쉘스크립트 이름
$1 ~ $9 : 명령줄 인수
$* : 모든 명령줄 인수리스트
$# : 인수의 개수
쉘이 저장된 위치는 /bin 디렉토리로 명령어들을 모아놓은 디렉토리이다.
따라서 /bin 디렉토리에 있는 프로그램은 해당 파일명만 입력하면 실행이 된다.
ls, pwd, cat 등등이 모두 /bin 디렉토리에 저장되어 있다.
마찬가지로 sh 쉘을 실행시키기 위해선 /bin/sh 가 아닌 sh만 입력해도 실행이 가능하다.
$0를 입력하면 sh(쉘 스크립트 이름)가 출력되고, UPPERCASE SHELL 프로그램에 "sh"가 실행인자로 넘어가서 실제 sh 쉘을 불러낼 수 있다는 것이다.
$0 을 입력하니 >>가 아닌 $의 형태로 입력 대기 상태가 뜬다.
평소에 사용하던 bash쉘을 불러내자.
bandit33으로 로그인되었다. 32가 아닌 33인 이유는 아마 UPPERCASE SHELL이기 때문인 것 같다.
파일들을 출력해보니 아직 uppershell프로그램이 실행 중인 것으로 나타난다.
/etc/bandit_pass/bandit33 파일을 읽어 패스워드를 얻자!
c9c3199ddf4121b10cf581a98d51caee
현재 level33에서 문제가 끝나있다.
한 달 동안 문제를 다 풀 수 있을까 걱정 많이 했는데, 어거지로 하다보니 어떻게어떻게 구글링해서 풀긴 풀었다.
생각보다 워게임이 명령어 학습에 도움이 되는 것 같다.