[overthewire] Bandit Level 20 → Level 21

moon_security·2025년 3월 21일

[OverTheWire] Bandit

목록 보기
22/32

문제 목표!

There is a setuid binary in the homedirectory that does the following: it makes a connection to localhost on the port you specify as a commandline argument. It then reads a line of text from the connection and compares it to the password in the previous level (bandit20). If the password is correct, it will transmit the password for the next level (bandit21).

이번 문제 해석하는 것만 해도 너무 어렵더라구요 ㅠㅠ
정리를 해보면요!

🧩 문제 Point
1. 홈 디렉토리에 suconnect 실행 파일이 있음
2. 이 파일을 실행하면 localhost의 내가 지정한 포트로 접속함
3. 그 후, 한 줄의 텍스트를 기다림
4. 그 텍스트가 bandit20 비밀번호와 같으면 bandit21의 비밀번호를 응답함

문제 풀이!

우선, suconnect 파일을 실행하면 localhost로 접속을 시도하기 때문에
저는 서버 역할을 해야 합니다!
이를 위해 netcat(nc)을 활용하면 됩니다.

📌 netcat(nc)
네트워크 연결을 다루는 툴
-l 옵션: listen의 약자로 서버처럼 대기하겠다는 의미
-p 옵션: 어떤 포트로 연결할 지 설정(이 문제에서는 임의의 값 설정해도 됨)

이제 서버 역할을 수행해 볼까요?

moonsookang@MoonSooui-noteubug Downloads % nc -l -p 1234

위 명령어를 실행하면 오류가 난 것처럼 멈춰 있는데요! 이게 정상입니다.
누군가의 요청을 대기하고 있는 상황이에요.
이제 새로운 리눅스 창을 실행하여 bandit20 계정으로 로그인 하겠습니다.
로그인 후, suconnect 파일을 실행하여 localhost의 1234 포트로 연결하면 준비는 끝납니다!!

아래 스크린샷을 보면 좌측은 nc 명령어를 활용하여 서버처럼 동작하는 터미널이구요!
우측은 suconnect 프로그램을 사용하여 로컬호스트의 1234로 연결하는 모습입니다.
좌측에서 우측으로 문자열을 보내자 suconnect 프로그램이 bandit20의 비밀번호가 맞는지 검사한 후 bandit21의 비밀번호(EeoULMCra2q0dSkYj561DX7s1CpBuOBt)를 전송해 주는군요!!

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

0개의 댓글