Wargame Writeup/OverTheWire - Bandit

Level18로 가기 위한 password는 passwords.old와 비교했을 때 passwords.new에서 다른 한 줄이다. diff 명령어를 이용하면 두 파일의 내용을 비교하여 다른 부분을 추출할 수 있다. diff passwords.old passwords.new 아래에 뜨는 줄이 passwords.new에서 다른 한 줄로, 구하고자 하는 password이다.
nmap 명령어를 사용하여 대규모 네트워크를 스캔해 열려 있는 포트를 확인한다. nmap localhost -p 31000-32000 열려있는 5개의 포트로 추려졌다. 각 5개의 포트에 현재 password를 입력하면서 openssl로 접속해본다. echo cluFn7wTiGryunymYOu4RcffSxQluehd | openssl s_client -quiet -connect localhost:31790 포트 31790만 sshkey를 반환한다. sshkey를 전달할 수 있도록 파일로 만들어보자. 앞선 레벨에서 했던 방법과 똑같이 임시 디렉토리를 만든 후 거기에 저장할 것이다. cat sshkey를 입력한 후 문자열을 복사하여 붙여넣고, cntrl+D로 빠져나온다. 위 sshkey 파일을 전달하면서 ba..
앞선 레벨과 유사하지만 이번엔 SSL로 암호화하여 password를 제출해야 한다. openssl s_client -host localhost -port 30001 그리고 level15의 password를 입력하면 level16으로 가기 위한 password를 찾을 수 있다.
Level15로 가기 위한 password는 level14의 password를 localhost의 port 30000에 전달하면 찾을 수 있다. level14의 password는 level13에 나와 있었던 경로에서 얻을 수 있다. cat /etc/bandit_pass/bandit14 nc 명령어를 통해 TCP, UDP 프로토콜을 사용하는 네트워크에 접속하여 데이터를 읽고 쓸 수 있다. nc localhost 30000 그리고 level14의 password를 입력하면 level15로 가기 위한 password를 구할 수 있다.
Level14로 가기 위한 password는 앞선 레벨들과 다르게 비밀번호가 아니라 private SSH key이며, /etc/bandit_pass/bandit14에 있는데 user bandit14로만 읽을 수 있다. ls sshkey.private가 보인다. cat sshkey.private RSA private key가 보인다. 문제에서 알려준 경로로 들어가보자. cd /etc/bandit_pass/bandit14 cat bandit14 user가 bandit14가 아니므로 permission denied 된다. 앞서 구한 sshkey.private로 bandit14에 접속해보자. 홈디렉토리에서 아래 명령어를 입력한다. ssh -i sshkey.private bandit14@localhost ssh ..
password가 들어있는 data.txt 파일이 16진수로 이루어져 있으며, 여러 번 압축되었다. 이번 문제는 힌트를 직접적으로 주었는데, mkdir 명령어를 이용하여 /tmp 아래에 디렉토리를 만들고, cp 명령어를 이용하여 파일을 복사하고, mv 명령어를 이용하여 파일 이름을 바꾸어라. ls data.txt 파일이 보인다. cat data.txt 16진수로 이루어진 파일 내용을 확인할 수 있다. 일단, 문제에서 제시한대로 디렉토리를 만들어보자. mkdir /tmp/eskim mkdir 명령어를 사용하여 /tmp 아래에 eskim라는 디렉토리를 만든다. cp data.txt /tmp/eskim cp 명령어를 이용하여 data.txt 파일을 복사해 esk 디렉토리 안에 붙여넣는다. cd /tmp/esk..
이번 password는 data.txt 파일에 있는데, 영어 소문자와 대문자가 각각 13 글자씩 이동하였다. 즉, a는 n, b는 o, c는 p로 쓰인 것이다. ls data.txt 파일이 보인다. cat data.txt 문자열이 보이지만 13글자씩 밀려있으므로 구하고자 하는 password가 아니다. tr 명령어를 사용하여 글자를 치환해 보자. tr '바꿀문자' '바뀔문자'의 형식으로 명령어를 입력한다. 우리는 다시 13글자만큼 더 이동시켜야 하므로 A~Z를 N~Z, A~M으로 치환하고, a~z를 n~z, a~m으로 치환한다. cat data.txt | tr 'A-Za-z' 'N-ZA-Mn-za-m' 다음 레벨로 가기 위한 password가 보인다.
Level11 password는 data.txt 파일 안에 base64로 암호화 되어 들어있다. ls data.txt 파일이 보인다. cat data.txt base64로 인코딩된 문자열이 보인다. base64 -d data.txt base64는 어떤 내용을 base64로 인코딩 해주는 명령어이다. 이를 디코딩하려면 옵션 -d를 붙이면 된다. 그럼 Level11로 가기 위한 password가 보인다.
이번 password는 data.txt 파일 내용 안에 사람이 해석할 수 있는 텍스트 형식으로 이루어진 문자열 중 '='뒤에 오는 문자열이다. cat data.txt 문자들과 기호들이 섞인 해석할 수 없는 내용들이 보인다. strings 명령어를 사용하면 문자열만 추출할 수 있다. strings data.txt 문자열만 나오지만 양이 너무 많다. grep 명령어를 통해 =을 포함한 문장을 찾는다. strings data.txt | grep = 다음 레벨로 가기 위한 password가 보인다.
je1att0
'Wargame Writeup/OverTheWire - Bandit' 카테고리의 글 목록 (2 Page)