본문 바로가기
WarGames/Bandit

Bandit : Level 16 ~ Level 20

by madevth 2021. 11. 1.
반응형

[Level 16] OpenSSL

Bandit Level 16

이전의 15단계처럼 localhost의 다른 포트에 현재의 비밀번호를 전송하는 것이지만, SSL 암호화를 거쳐야 한다.

우선 openssl 명령어를 살펴보자.

설명을 살펴보면, openssl은 Secure Sockets Layer를 위한 암호화 도구이다.

SSL은 인터넷 보안 프로토콜로, User가 Http에 접속할 때와 달리 Https에 접속할 때는 이 암호화된 연결을 거친다. 왜 http보다 https가 안전한지 몰랐는데 URL에 https가 있는 웹사이트는 바로 이 SSL/TSL를 구현한 것이기 때문이었다.

기존 웹에서 주고받는 데이터는 탈취되면 누구나 읽을 수 있었지만, SSL이 생기면서 누군가가 데이터를 가로채더라도 읽을 수 없게 되었다. 쇼핑몰에서 주문을 하고 카드 넘버 같은 것을 입력했을 때 이 데이터가 안전하게 암호화된다는 뜻!

openssl command에서 s_client를 살펴보니 SSL을 통해 서버와 연결할 수 있는 기능이 있었다!

$man s_client로 다시 살펴보니 -connect를 통해 원하는 host와 port로 연결이 가능했다.

$ openssl s_client -connect localhost:30001을 쳤더니 블라블라 인증을 시작하고 현재 비밀번호 입력.

비밀번호 Get!

 

 

[Level 17] 열려있는 포트 찾기, 포트 스캔

Bandit Level 17

이번에는 어느 포트에 데이터를 전송해야 하는지를 찾는 문제이다.

nmap을 이용하면 네트워크 스캐닝을 할 수 있다. -p 옵션으로 포트 스캐닝을 진행하였다.

$ nmap -p 31000-32000 localhost

5개의 포트가 열려있는데, SERVICE는 모두 unknown이다. 5개의 포트 중 SSL이 적용된 포트를 찾아보자.

-p: 포트 스캔 옵션, -sV: 서비스 정보 옵션

$ nmap -p 31000-32000 -sV localhost

31518과 31790 포크가 ssl을 사용함을 알아냈다.

그런데 31518은 echo(print와 비슷)를 사용하고 있고 31790은 unknown이지만 그 밑으로 스크립트 같은 것이 떴는데 Wrong! Please enter the correct password!라는 문구가 적혀있어서 31790 포트임을 짐작할 수 있었다.

$ openssl s_client -connect localhost:31790

아니... 패스워드 주세요... 왜 RSA 키를 주십니까.. 또 ssh로 접속하라고요? ᅮᅮ

 

 

[Level 18] diff로 파일 비교하기

Bandit Level 18

두 개의 파일(new와 old)이 있다. 다음 레벨을 위한 패스워드는 new 쪽 파일에 있는데 old와 비교하여 딱 한 줄 바뀐 부분이 패스워드다.

두 파일의 차이를 확인하는 명령어는 diff. $ diff passwords.new passwords.old로 확인해 주자.

42c42는 42번째 줄이 다르다는 의미이다. '<'는 왼쪽 파일에만 있고 '>'는 오른쪽 파일에만 있는 line이라는 뜻이므로 kf로 시작하는 문자열이 우리가 얻고자 하는 패스워드이다.

실제 password.new의 40~44줄과 password.old의 40~44줄을 비교해 보면 42번째 부분만 다르다.

왼쪽이 new, 오른쪽이 old

 

 

[Level 19] ssh + 명령어

Bandit Level 19

홈 디렉토리의 readme 파일만 확인하면 되지만, 로그인과 동시에 로그아웃이 된다.

추천 command에는 딱히 특별할 것은 없길래 ssh 쪽을 찾아보니 접속과 동시에 명령어를 칠 수 있었다.

궁금해서 bandit19로 접속한 후 bandit18로 들어가서 .bashrc 파일을 확인해 보았다.

그런데........ 파일이 너무 길잖아. 글씨를 개미만큼으로 줄여야 한 화면에 들어간다.

이대로 포기할 순 없지. 배운 것을 써먹어보자!

기존의 .bashrc 파일과 bandit19의 .bashrc를 각각 파일로 만든 후 두 파일을 비교하면 되지!

그래서 아무 데나 들어가서 test1 파일을 만들고 bandit19의 파일로 test2를 만든 후

$ diff test1 test2를 통해 다른 점을 출력해 보았다.

결과는 허무했다.

그냥 exit 0 때문이었다ㅎㅎ 115줄 읽어봤으면 억울해서 쓰러졌을 듯..

- 끝 -

 

 

[Level 20] Setuid

Bandit Level 20

Setuid란 사용자에게 일시적으로 소유주의 실행 권한을 가지고 실행파일에 접근할 수 있는 접근 권한을 의미한다.

bandit20-do의 user가 bandit20으로 설정되어 있는 것을 볼 수 있다.

$ ./bandit20-do로 파일을 실행해 보자.

Bandit20 user로 Run command가 가능함을 볼 수 있다.

$ ./bandit20-do cat /etc/bandit_pass/bandit20으로 비밀번호 Get!

 

드디어 반 이상을 풀었다.

레벨이 올라갈수록 점점 어려워지지만 조금만 더 힘내자!

 

반응형

'WarGames > Bandit' 카테고리의 다른 글

Bandit : Level 26 ~ Level 30  (0) 2021.11.07
Bandit : Level 21 ~ Level 25  (0) 2021.11.03
Bandit : Level 11 ~ Level 15  (0) 2021.10.30
Bandit : Level 6 ~ Level 10  (0) 2021.10.27
Bandit : Level 0 ~ Level 5  (0) 2021.10.24

댓글