문제
풀이 및 정답
이번 Level Goal은 이전에 획득한 비밀번호를 localhost 30000 포트에 제출하면 된다.
여기서 “제출”이라 함은 단순하게 문자열을 서버로 전송한다의 의미로, 서버와의 연결이 유지되는 상황은 필요가 없을 수 있다.
- 문제에서 언급한 localhost는 client의 홈 서버를 말하는 것은 당연히 아니다.
ssh 명령어나 openssl s_client 명령어는 서버와의 연결을 유지하는 방식 hand-shake를 통해 서버와 클라이언트가 통신하는 방식으로 동작하기에 적절하지 못하다.
이전에 ssh -i
명령어로 bandit14 계정으로 서버에 우선 접속한다.
localhost로 전송해야할 비밀번호를 한번 더 확인하고 제출을 시도한다.
1. nc로 시도
nc localhost 30000
nc
명령어로 30000 포트로 접속을 시도하면 다음과 같이 대기 상태에 들어가게 된다.
멈춘것은 아니므로 /etc/bandit_pass/bandit14
에 담겨있는 문자열을 그대로 치면 성공하고 Ctrl+d
를 통해서 빠져나오면 된다.
2. telnet으로 시도
telnet localhost 30000
nc
명령어와 마찬가지로 호스트 서버, 포트 순서로 명령어를 작성하면 된다.
접속이 되면 나가는 방법을 출력해주는데 여기에 바로 문자열을 제출하면 된다.
문자열이 제출되면 자동으로 연결이 끊기게 된다.
passwd : 8xCjnmgoKbGLhHFAZlGE5Tmu4M2tKJQo
man 명령어
man
명령어를 생활화 해야한다.
필자도 모든 명령어를 당연히 외우지 못하고 익숙하지 못한 명령어들이 너무나도 많기 때문에 항상 배우는 자세로 man
명령어를 통해 위에서 사용한 nc
, telnet
명령어를 찾아보고 사용했다.
nc
에 대해서 알고싶으면 man nc
처럼 작성하면 간단하게 사용에 필요한 옵션, 인자의 순서 같은 것들을 알려주니 반드시 습관화 하자.
다음 문제로!