overthewire.org
Bandit
Level 1: 특수문자 파일 읽기 = cat ./- 로 특수문자를 파일의 이름으로 지정해줘야 함
Level 2: 특수문자 + 공백 파일 읽기 / 공백은 "나 '로 묶어서 하나의 파일로 만들면 되는데, 아니면 역슬래쉬
space\ in\ this\ filename or "space in this filename"
그러나 -- 옵션이 있기 때문에 파일이름에 파일이 단독으로 있기 때문에 cat ./*로 읽고 넘어간다.
Level 3: 숨김파일 읽기 : ls -l
Level 4: 여러개의 파일에서 사람이 읽을 수 있는 파일 찾기: file명령어(file 특성 출력) ex) file ./*
Level 5: human-readable, 1033 bytes in size, not executable인 많은 디렉토리안에 파일을 찾으면 그 안에 패스워드가 있다고 하는데,
Level 6: owned by user bandit7, owned by group bandit6, 33 bytes in size라길래, find로 찾아봄
find / -user bandit7 -group bandit6 -size 33c 2>/dev/null
Level 7: 엄청 큰 데이터인 data.txt안에서 millionth를 찾으면 거기서 비밀번호가 있음 grep로 해결
Level 8: 엄청 큰 라인중에서 하나만 패스워드 라인임 uniq사용
Level 9: data.txt안에서 사람이 읽을 수 있는 문자중 =들어간 문자들의 조합
strings는 사람이 읽을 수 있는 문자 추출
Level 10: base64로 data.txt가 인코딩 되어있음.
Level 11: ROT 13 소문자 대문자 구성되어 있음.
tr(translate) 문자열 삭제나 치환
Level 12:
File Magic Numbers를 xxd나 hexdump로 확인하면서 확장자를 압축해제 하면서 최종 패스워드를 가지고 있는 파일을 획득함.
Level 13:
bandit13에 접속하면 sshkey가 있는데, scp를 이용해서 우선 key값을 카피해온다. (bandit14로 접속하는 인증서 키)
그리고 ssh -i sshkey.private 로 접속 ( sshkey.private는 외부에는 접근못하게해야해서 700으로 바꾸면 됨)
Level 14:
nc localhost -p 30000 후에 비밀번호 입력하면 15번 비밀번호를 출력해줌
Level 15:
openssl s_client -connect localhost:30001 후에 비밀번호 입력 시 16번 비밀번호 출력해줌
Level 16:
nmap -sV localhost -p 31000-32000
#31790에 openssl로 접속
openssl s_client -quiet -connect localhost:31790 # 디버그 메시지때문에 tls통신에 입출력이 오염될 수 있어서 -quiet을 붙인다.
rse_private_key를 받아와서
ssh -i private.key로 접속