해킹 동아리 I.Sly()/방학 스터디 활동

[bandit] level 32 -> level 33

gom1n 2021. 2. 24. 09:52

 

 

 

로그인 하자마자 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에서 문제가 끝나있다.

한 달 동안 문제를  다 풀 수 있을까 걱정 많이 했는데, 어거지로 하다보니 어떻게어떻게 구글링해서 풀긴 풀었다.

생각보다 워게임이 명령어 학습에 도움이 되는 것 같다.