오늘도 문제를 풀어봅시다
Bandit Level 19 → Level 20 문제 풀이
ssh bandit19@bandit.labs.overthewire.org -p 2220
password : awhqfNnAbc1naukrpqDYcF95h7HoMTrC
Bandit Level 19 → Level 20 문제는 홈 디렉터리의 setuid 바이너리를 이용하여 /etc/bandit_pass 경로에서 bandit20의 패스워드를 읽어내는 문제입니다
먼저 /etc/bandit_pass 경로에서 bandit20를 읽어보니 권한이 없다고 나오네요 문제대로 홈 디렉터리의 bandit20-do라는 파일을 이용하여 bandit20 파일에 접근해 봅시다
사진과 같이 bandit20-do 파일 정보를 확인하니 소유자 권한에 s라고 표시가 되어있습니다 이게 바로 setuid가 설정되어 있다는 의미입니다 즉 bandit20-do 파일을 실행하면 bandit20의 권한 상승으로 실행됩니다
[ 특수 권한 정보 ]
결국에는 bandit20 권한 상승으로 /etc/bandit_pass 경로에서 bandit20 패스워드를 읽을 수 있습니다
Bandit Level 20 → Level 21 문제 풀이
ssh bandit20@bandit.labs.overthewire.org -p 2220
password : VxCazJaVykI6W36BkBU0mJTCM8rR95XT
Bandit Level 20 → Level 21 문제는 홈 디렉터리의 있는 setuid 바이너리 파일을 명령 줄 인수로 실행하여 지정된 포트 localhost에 연결합니다 그 후 이전 수준의 암호가 맞는지 체크하여 맞으면 다음 레벨의 패스워드를 획득할 수 있는 문제입니다
홈 디렉터리의 suconnect이라는 setuid 바이너리 파일입니다 해당 명령어를 실행했을 때 명령 인자로 포트 번호 입력이 필요합니다 하지만 지정된 포트가 없으므로 따로 포트를 하나 임의로 개방해 줍시다
포트 개방 명령어는 nc : Netcat을 이용하여 열었습니다 임의의 포트 1234를 개방하여 클라이언트에서 명령의 결과(/etc/bandit_pass/bandit20 : bandit20 패스워드)를 바로 서버 측으로 전송하였습니다
그래서 suconnect 명령 인자로 우리가 개방한 1234 포트를 입력해 주면 bandit20 패스워드를 전송시켜 그다음 레벨의 패스워드를 획득할 수 있었습니다
nc -l -p 1234 < /etc/bandit_pass/bandit20 & : 임의의 포트 1234를 열고 listen 합니다 listen 한 것을 다시 background로 돌리기 위해 명령어 줄 마지막에 & 기호를 추가한 겁니다
Bandit Level 16 → Level 17에서도 nc를 이용하여 열려있는 포트를 찾아봤는데 nc에 대해 다시 한번 짚고 넘어가 봅시다
넷캣(Netcat)은 TCP나 UDP 프로토콜을 사용하는 네트워크 연결에서 데이터를 읽고 쓰는 간단한 유틸리티 프로그램입니다 일반적으로 cat과 비슷한 사용법을 가지고 있지만, cat 이 파일을 쓰거나 읽듯이 nc는 network connection에 읽거나 쓰는 역할을 합니다
TCP | Transmission Control Protocol 전송 제어 프로토콜 두 개의 호스트를 연결하고 데이터 스트림을 교환하게 해주는 중요한 네트워크 프로토콜입니다 (연결 지향형 프로토콜) 흐름 제어와 혼잡 제어를 지원하며 데이터의 순서를 보장합니다 |
UDP | User Datagram Protocol 비연결형 프로토콜로써, 인터넷상에서 서로 정보를 주고받을 때 정보를 받거나 보내는 신호 절차를 거치지 않고 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜입니다 혼잡 제어를 하지 않아 TCP보다 전송 속도가 빠르지만 데이터 전송에 대한 보장을 하지 않기 때문에 패킷 손실이 발생할 수 있다 |
프로토콜 : 컴퓨터 사이에서 데이터의 교환 방식
흐름 제어 : 송신측과 수신측의 데이터 처리 속도 차이를 해결하기 위한 기법
혼잡 제어 : 송신측의 데이터 전달과 네트워크의 데이터 처리 속도 차이를 해결하기 위한 기법
이렇게 넷캣 개념을 설명하면서 다양한 용어들의 역할과 특징에 대해 알아봤습니다