(1) Bandit
(2) 이전 문제 풀이
이전 문제는 nc(netcat)명령어로 특정포트에 비밀번호를 보내 받은 응답으로 비밀번호를 해결했다.
Bandit 워게임 풀기 [level14 -> level15]
(1) Bandit (2) 이전 문제 풀이 이전 문제는 ssh키를 사용해서 다음 레벨로 넘어가서 직접 비밀번호를 알아보는 방식이었다. Bandit 워게임 풀기 [level 13 -> level14] (1) Bandit (2) 이전 문제 풀이 이전 문제
suhyeokdevlog.tistory.com
(3) level15 -> level16
이번 문제는 SSL암호화로 localhost로 30001번 포트로 현재 비밀번호를 보내면
다음 레벨의 비밀번호를 받을 수 있다고 한다.
일단 ssl이라고 하니 openssl명령어가 신경쓰인다.
사실 명령어를 봐도 이걸로는 알 수 없다.
그래서 인터넷에 구글링을 열심히 해본 결과
s_client라는 개념이 등장하였다.
우선 우리는 openssl과 s_client의 개념에 대해서 약간알 필요가 있다.
*OpenSSL & S_client의 개념*
OpenSSL이란 암호화와 보안 프로토콜을 구현하기 위한 오픈 소스 라이브러리이며,
TSL & SSL과 같은 보안 프로토콜을 제공한다. 또한 컴퓨터 네트워크에서 데이터 전송시
보호를 제공하며, 안전한 통신에 필수적인 요소이다.
s_client는 OpenSSL 라이브러리에서 제공하는 명령줄 도구 중 하나이다.
s_client를 사용하면 SSL/TLS 연결을 설정하고 디버깅하는 데 사용할 수 있다.
보통 s_client는 원격 서버의 SSL/TLS 연결을 확인하거나,
SSL/TLS 인증서를 확인하고 유효성을 검사하기 위해 사용된다.
위의 개념들을 활용해서
"openssl s_client -connect [도메인]:[포트]"의 방식으로
사용하면 우리가 원하는 정보를 얻을 수 있다.
우리는 도메인과 포트를 알아서 직접 연결하면된다.
참고로 기본 도메인과 포트는 "localhost:4333"이라고 한다.
그래서 우리는 "openssl s_client -connect localhost:30001"로 연결하고,
현재 비밀번호를 입력하면된다.
이렇게 정상적으로 다음레벨의 비밀번호를 알아냈다.
이제부터는 단순히 리눅스뿐만 아니라, 컴퓨터에 대해서 전반적인 지식이 있어야지 문제를 풀 수 있다.
bandit16의 비밀번호는 "JQttfApK4SeyHwDlI9SXGR50qclOAil1"이다.