[OverTheWire System - Bandit] Level 20 >> Level 21

Level Goal

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).

NOTE: Try connecting to your own network daemon to see if it works as you think

 

홈 디렉토리에는 다음을 수행하는 setuid 바이너리가 있습니다. 명령줄 인수로 지정한 포트에서 localhost에 연결합니다. 그런 다음 연결에서 텍스트 줄을 읽고 이전 수준(bandit20)의 암호와 비교합니다. 암호가 정확하면 다음 레벨(bandit21)의 암호를 전송합니다.
참고: 자신의 네트워크 데몬에 연결하여 생각한 대로 작동하는지 확인하십시오.

Hint

1. netcat

Write Up

더보기

홈 디렉토리를 살펴보면 setuid가 설정된 suconnect 파일이 보였다.
문제 설명에서 나와있는대로 작동하는지 확인하겠다.

 

연결할 포트를 인자 값으로 넣어주면 TCP를 이용하여 서버에 연결되는 프로그램이라고 나온다. 
연결 후 bandit20의 pw를 넣으면 suconnect 프로그램이 bandit21의 pw를 넘겨준다고 한다.

 

netcat 터미널

그래서 나는 일단 터미널을 하나 더 열어서 bandit20에 연결한 후에 netcat를 이용하여 서버 구동하였다.

 

suconnect 터미널

netcat의 서버 포트인 1234를 인자 값으로 넣어서 실행하니, 연결이 잘 됐다.

 

netcat 터미널

나는 suconnect 프로그램에 bandit20의 pw를 넘겨주기 위해 netcat을 통해 bandit20의 pw를 전달하였다.

 

suconnect 터미널

비밀번호를 잘 읽었고, bandit21의 pw를 보냈다고 한다.

 

netcat 터미널

확인해보니, bandit21의 pw이 찍히는 것을 확인할 수 있었다. 

 

bandit21 :: gE269g2h3mw3pwgrj0Ha9Uoqen1c9DGr