방학 때 했었는데 뇌가 썩었는지 많이 까먹어버렸다. bandit을 해야할 명분이 생겨서 다시 하는김에 다시 까먹지 않고, 깔끔하게 정리하기 위해서 글을 쓰려고 한다. 어떤식으로 쓰는(이 글은 지속적으로 업데이트 됩니다.)
Before start
Bandit은 명령어를 활용하여 다음 단계 서버의 비밀번호를 계속해서 알아내는 퍼즐이다. 다양한 명령어를 사용하여 비밀번호를 알아내고, 그 번호를 바탕으로 다음 서버에 들어간다. 이를 통해서 다양한 명령어를 학습할 수 있어 ctf 를 시작할 때 명령어를 모른다면 거의 필수적으로 한다.
Lev.0
man - manual - 정말 중요하다! 명령어에 대한 정보를 알 수 있다.
man 명령어 - 명령어에 대한 정보 검색
ssh - Secure Shell - 서버에 접속(?) 한다.
ssh 주소 -p 숫자 - 주소에 숫자의 포트로 접속한다.
ssh bandit0@bandit.labs.overthewire.org -p 2220 을 하는것으로 level 0 서버에 접속할 수 있고 제공해 준 비밀번호 bandit0로 접속할 수 있다.
Lev.1
ls - list - 현재 디렉토리의 내용
ls - 현재 디렉토리의 내용
cat - 파일 내용 출력
cat [파일명] - 파일의 내용 출력
ls 를 통해서 readme 파일이 있는것을 알 수 있고, cat readme를 해서 비밀번호 boJ9jbbUNNfktd78OOpsqOltutMc3MY1 를 알아내었다.
Lev.2
cat [~/파일명] - 절대경로, -등의 파일명을 가진 파일의 내용을 볼 수 있다.
ls를 통해 파일명이 -라는 사실을 알아내었다. cat ~/- 를 입력해 파일 -의 내용을 본다. 비밀번호 CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9를 알아내었다.
Lev.3
cat ["파일명"] 파일의 내용을 볼 수 있다.
ls를 통해 파일명이 spaces in this filename 이라는 것을 알게 되었다. 그냥 cat을 하면 spaces,in,this,filename 4개의 파일을 탐색하겠다는 것이기 때문에 묶어주기 위해서는 ""를 써야한다. cat "spaces in this filename"을 하면 비밀번호 UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK를 알아낼 수 있다.
Lev.4
cd - 디렉토리로 이동할 수 있다.
cd [디렉토리명] - 그 이름의 디렉토리로 들어갈 수 있다.
cd .. - 디렉토리에서 한단계 나올 수 있다.
ls [-a] - 숨겨진 파일도 볼 수 있다.
ls [-al] - 파일의 정보도 볼 수 있다.
ls를 통해 inhere 디렉토리의 존재여부를 알아내고 cd inhere을 통해 들어간다. ls all을 통해 숨어있던 .hidden 파일의 존재를 알아내고 cat을 통해서 열어주면 비밀번호 pIwrPrtPN36QITSp3EQaw936yaFoFgAB를 알아낼 수 있다.
Lev.5
cat a b c d - a b c d를 한번에 연다
ls를 통해 inhere 디렉토리의 존재여부를 알아내고 cd inhere을 통해 들어간다. ls all을 통해 파일 0~9의 존재를 알아내었다. cat ./-file00 ./-file01...... 를 입력하여 10개의 파일을 한번에 열어 그중에 인간이 읽을 수 있는 비밀번호의 존재koReBOKuIDDepwhWk7jZC0RTdopnAYKh를 알아내었다.
Lev.6
find - 조건에 맞는 파일을 찾는다.
find [-size 파일크기c] - 파일크기에 해당하는 바이트 크기의 파일을 찾는다.
ls -> inhere -> 엄청난 양의 파일 과 디렉토리 발견 -> find -size 1033c 입력을 통해 조건에 맞는 1033b의 파일 발견 -> maybehere07 .file2에서 비밀번호 DXjZPULLxYr17uwoI01bNLQbtFemEgo7 확인
Lev.7
find [-user username] - user가 username인 파일 찾기
find [-group groupname] - group이 groupname인 파일 찾기
어딘가에 있기 때문에 cd ..를 이용해 루트로 이동 find / -user bandit7 -group bandit6 -size 33c 를 입력하여 쭉보고, denied가 되지 않은 bandit7.password라는 이름의 파일 발견. cd를 통해 이동한 후 cat으로 열면 비밀번호 HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs를 얻을 수 있다.
Lev.8
grep [PATTERN] [FILE] - 파일에서 pattern에 맞는 문자열의 부분을 출력한다.
ls를 통해 data.txt 가 현 디렉토리가 있는 것을 확인 -> grep millionth data.txt를 입력해 비밀번호 cvX2JJa4CFALtqS87jk27qwqGhBM9plV 발견
Lev.9
sort [filename] - 파일내용을 정렬한다.
uniq [-c] [filename] - 파일에서 각 줄이 몇번씩 반복되는지 알려준다.
uniq는 sort된 상태에서 보통 사용한다.
cat [filename] | [명령어a] | [명령어b] - 명령어 a->b 순으로 실행한 후 내용을 보여준다.
ls를 통해 data.txt 가 현 디렉토리가 있는 것을 확인 -> cat data.txt |sort |uniq -c 를 통해서 한 줄만 존재하는 비밀번호 UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR 발견
Lev.10
strings [filename] - 바이너리 파일에서 내용확인
ls를 통해 data.txt 가 현 디렉토리가 있는 것을 확인 -> strings data.txt | grep '==' 를 입력해 비밀번호 truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk 발견
Lev.11
base64 --decode [filename] - base64로 endoding 되어있는 파일의 내용을 decoding해서 확인
ls를 통해 data.txt 가 현 디렉토리가 있는 것을 확인 -> strings data.txt | grep '==' 를 입력해 비밀번호 IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR 발견
Lev.12
tr '1-2 ' '3- 4' - 문자들에 대해서 1-2구간을 3-4 구간으로 치환
ls를 통해 data.txt 가 현 디렉토리가 있는 것을 확인 -> cat data.txt | tr 'n-za-mN-ZA-M' 'a-zA-Z' 를 입력해 비밀번호 5Te8Y4drgCRfCx8ugdwuEX8KFC6k2EUu 발견
Lev.13
xxd - make a hexdump
xxd -r [filename] > [filename2] - 파일을 filenmae 라는 이름의 파일로 hexdump파일을 바이너리화
mkdir - 디렉토리 제작
cp [filename] [directory] - 파일을 디렉토리 위치에 복사
gunzip - gz 압축해제
bunzip - bz 압축해제
'코딩 > 코딩 이모저모' 카테고리의 다른 글
idea - 원에서 두 호의 위치 관계 (1) | 2021.05.04 |
---|---|
Bandit Walkthrough level 14 to level 26 (0) | 2021.03.21 |
10~11 월 PS 일지 + 나의 PS 계획 (0) | 2020.11.24 |
2020 한국 정보 올림피아드 2차 결과 및 후기 (0) | 2020.11.17 |
8~9 월 PS 및 블로그 관련 잡다한 일지 (0) | 2020.09.15 |