[overthewire] Bandit Level 15 → Level 16

moon_security·2025년 3월 17일

[OverTheWire] Bandit

목록 보기
17/32

문제 목표!

The password for the next level can be retrieved by submitting the password of the current level to port 30001 on localhost using SSL/TLS encryption.

이번에도 패스워드는 30001 포트로 패스워드를 전송하면 얻을 수 있나 보군요.
근데 마지막에 조건이 있네요?
SSL/TLS 암호화를 사용하라..?
흠.. 함께 풀어봅시다!

문제 풀이!

우리가 평문으로 데이터를 전송하면 다른 사람들이 내용을 탈취하여 읽을 수 있기 때문에 암호화하여 전송해야 합니다.
SSL/TLS는 인터넷에서 데이터를 암호화하여 전송할 수 있는 프로토콜이며, 리눅스에서는 오픈소스 라이브러리로 openssl을 제공합니다.
openssl을 사용하여 localhost:30001과 SSL/TLS 통신을 해볼까요?

bandit15@bandit:~$ echo "8xCjnmgoKbGLhHFAZlGE5Tmu4M2tKJQo" | openssl s_client -connect localhost:30001 -quiet
Can't use SSL_get_servername
depth=0 CN = SnakeOil
verify error:num=18:self-signed certificate
verify return:1
depth=0 CN = SnakeOil
verify return:1
Correct!
kSkvUpMQ7lBYyCM4GBPvCvT1BfWRy0Dx

위 명령어를 사용하면 다음 레벨로 갈 수 있는 비밀번호를 얻을 수 있습니다.

📌 openssl 명령어 분석
openssl s_client -connect localhost:30001 -quiet
✅ openssl s_client: 웹 브라우저 없이도 SSL/TLS 서버와 직접 연결할 수 있는 클라이언트 프로그램
✅ -quiet: 이 옵션을 설정하면 불필요한 서버의 인증서 정보나 SSL 핸드쉐이크를 출력하지 않음

감사합니다 :)

profile
모의해킹 & 보안 공부 기록 블로그

0개의 댓글