bandit Level 21까지 풀다가 정리가 필요할 듯해서 Write-up을 써보기로 했다
지금까지 풀어왔던거 복기도 할겸 처음부터 써보자! (putty 설정 및 bandit0은 생략하고 적어보려고 한다.)
Bandit Level 0 → Level 1
영어... 읽기 힘들다.. 홈디렉토리에 위치한 readme라는 파일에 다음 단계를 위한 비밀번호가 저장되어 있다고 한다.
기초적인 리눅스 명령어는 알고있기에 바로 해결했다. Next Level로 고고!
Bandit Level 1 → Level 2
홈디렉토리에 '-' 라는 특수문자로 된 이름의 파일에 비밀번호가 저장되어 있다고 한다.
ls 명령어로 파일을 확인해본다. '-' 라는 파일이 하나있다.
이전단계처럼 "cat -" 를 입력해도 반응이 없고 보통 문자열으로 인식시키기 위해 싱글쿼터나 더블쿼터를 많이 쓰기에 시도해봤지만 되지 않는다.
마지막으로 "./-" 경로를 입력하니까 패스워드가 출력된다. Next Level로 고고!
Bandit Level 2 → Level 3
이번에는 파일명에 공백이 있다고 한다.
싱글쿼터를 사용해서 문자열로 인식시켜서 한번에 찾아냈다.
SPLUNK SIEM을 다룰 때 자주 사용하기에 쉽게 풀 수 있었다. NEXT!
Bandit Level 3 → Level 4
'inhere' 디렉토리안에 숨겨진 파일을 찾아야한다.
"ls" 명령어로 확인하니 'inhere' 디렉토리가 있다. "cd" 명령어로 해당 디렉토리로 들어가서 "ls" 명령어를 쓰니 아무것도 나오지 않는다.
찾아야할 파일이 숨겨져있기 때문에 옵션을 줘야겠다.
"ls -al" 명령어를 쓰니 숨겨진 '.hidden' 파일이 나온다. 패스워드 획득!
업무할때 "ls -al" 명령어를 자주 쓰다보니 어렵지 않게 풀었지만 정확히 무슨 옵션인지 몰라서 검색을 해봤다.
- -l : 파일들을 나열할때 자세히 출력한다.
- -a : 경로안의 모든 파일을 나열한다.(숨김파일도 포함)
- -R : 위치한 디렉토리 하부 디렉토리의 파일까지 모두 출력한다.
- -h : 파일크기를 해석파기 편하게 출력한다.
- -r : 출력 결과를 내림차순으로 정렬한다.
- -t : 출력 결과를 파일이 수정된 시간을 기준으로 정렬한다.
-a 옵션을 통해 숨김파일을 확인할 수 있었고 l 옵션을 통해 권한, 소유자, 파일크기, 수정일자 등을 알수있었다.
Bandit Level 4 → Level 5
inhere 디렉토리에 오직 사람만 읽을수 있는??? 파일에 비밀번호가 저장되어 있다고 한다. 지금까지도 전부 사람이 읽을 수 있는 파일들이었는데..? 갑자기 왠 뚱딴지 같은 소린지... 확인해봐야겠다.
흠.. 오히려 사람이 읽을 수 없는 파일인거같은데??
구글링해보니 'human-readable file'이란? 이진데이터가 아니라 ASCII 또는 유니코드 텍스트로 인코딩한 데이터라고 한다.
문제힌트에 적혀있던 명령어 "file"을 사용하여 'inhere' 디렉토리 안에 있는 파일들의 형식을 확인했다.
'-file07'만 ASCII text 인걸 보니 저기에 다음 패스워드가 저장되어 있나보다.
ASCII 파일은 또 어떻게 읽나 찾아보니 "strings"라는 명령어가 ASCII 문자를 추출하여 출력한다고 해서 입력해보았다.
빙고!
+ 추가
나중에 알고보니 지금까지 "cat" 명령어로 읽었던 모든 파일이 ASCII text 형식이었다.
그냥 'cat ./file07'하면 나오는 거였음...ㅎ
Bandit Level 5 → Level 6
'inhere' 디렉토리 안에 '사람이 읽을수있고, 1033 byte 크기이며, 실행할수 없는' 파일을 찾아야한다.
"find" 명령어 옵션
-type | -size | -executable | -exec |
b : 블록파일 c : 문자 d : 디렉토리 p : 파이프(FIFO) f : 파일 l : 심볼릭 링크 s : 소켓 |
b : 블록단위(514 bytes) c : byte w : 2byte 워드 k : Kilobytee M : Megabytes G : Gigabytes |
실행 권한을 가진 * readable : 읽기 권한을 가진 * writable : 쓰기 권한을 가진 |
검색된 파일에서 추가 명령 실행 |
find 명령어에는 많은 옵션들이 있지만 문제 풀이에 필요한 옵션들만 적어보았다.
일단 '실행 권한을 가진' '1033 byte'의 '파일'을 찾아야한다. 위 표를 참고하여 아래와 같이 작성할 수 있다.
마지막으로 사람이 읽을 수 있는 ASCII text 형식의 파일을 검색해야하는데 find 로 검색된 파일에서 추가로 file 명령어를 실행해야한다.
exec 명령어 전까지 검색한 결과가 {} 안에 들어가서 파일 형식을 확인하고 grep을 사용하여 사람이 읽을 수 있는 ASCII text만 출력했다.
'bandit Write-up' 카테고리의 다른 글
Bandit Level 26 ~ 30 (0) | 2023.12.10 |
---|---|
Bandit Level 21 ~ 25 (0) | 2023.12.05 |
Bandit Level 16 ~ 20 (1) | 2023.12.05 |
Bandit Level 11 ~ 15 (1) | 2023.12.04 |
Bandit Level 6 ~ 10 (0) | 2023.12.01 |