
- Level 20 -> Level 21으로 넘어가는 문제이다.
이번에도, setuid binary가 설정되어 있다. 라고 한다.
그니까, 이 프로그램은 뭐냐면, 네트워크 연결을 맺은 다음에 거기에 자신에게 맞는 비밀번호를 입력하면? 비밀번호를 준다. (밑에 사진과 설명으로 예시를 들어보면)

A와 B컴퓨터가 네트워크 연결을 한다.
A에는 certa가 로그인해 있고, B에는 AA가 로그인해 있다.
B 컴퓨터의 AA의 비밀번호 1234를 (자신의 비밀번호)
A 컴퓨터인 certa에 보내면,
A 컴퓨터인 certa도 자신의 비밀번호를 B 컴퓨터인 AA한테 응답해주는 프로그램이다.

한쪽에는 bandit21로, 한쪽에는 bandit20으로 로그인을 할 것이다.
그러고, bandit20의 비밀번호를 우리는 알고 있으니 그걸 bandit21에 보내면,
bandit21은 자기의 비밀번호를 응답해 준다는 것이다.
bandit20의 권한을 가지고 있으니, 네트워크 연결은 할 수 있다.
그런데, bandit21로 어떻게 연결을 하느냐 이다.
이거를 바로 setuid 파일을 이용해서 연결을 할 것이다.

- 현재 경로에서 파일을 보면, suconnect 파일이 보인다.
setuid가 bandit21로 설정되어 있다.
그래서, bandit20에 포트를 열고, setuid를 이용해서 연결을 시도한다.
이것을 하기 위해서 터미널을 하나더 열어줘야 한다.

- bandit20 로그인을 하나더 해준다.

bandit20으로 로그인한 터미널을 2개로 만들어 준다.

- 요상태에서 bandit20에서는 nc로 포트를 여는 것이다.

- 그리고 다른 터미널에서는 ./suconnect 요런식으로 실행을 해보면, 뒤에 포트 넘버를 연결하게 되어있다. (localhost니까)

- 이런식으로 입력을 해주고, 3333 포트를 다른 터미널에서 열고 대기하고 있었으니 그에 맞는 포트로 연결을 시도해주어야 한다.

- 그러면, 이런식으로 다른 터미널에서 연결이 잘 된 모습을 볼 수 있다.
자, 이제 포트 번호를 열어두고 기다리던 터미널에서 bandit20 비밀번호를 넣고 다른 터미널에 보내주면, suconnect의 자기의 비밀번호를 전달해줄 것이다.
suconnect는 현재 bandit21의 권한으로 실행 되었으니까, bandit21의 비밀번호를 전달해 줄 것이다.

- 그래서 bandit20의 비밀번호를 입력해주면, bandit21의 비밀번호를 넘겨 받았다.

- 다른 터미널을 보면, 비밀번호가 왔고, 그래서 그다음 비밀번호를 보냈다고 적혀 있다.

- 알아낸 비밀번호로 로그인을 성공하였다.
제 유튜브 채널입니다.
도움이 됐다면, 구독 부탁합니다!
주변에 제 블로그, 유튜브를 알려주시면 감사하겠습니다~! :)
Thank you for watching the blog.
Please subscribe! I would appreciate it if you could share the blog around you.