Bandit level20

반응형


OverTheWire 문제풀이 - Bandit

* Bandit 는 리눅스 관련 문제입니다.

* 리눅스 명령어를 연습하기에 아주 좋습니다.

* 개인적인 문제풀이로 해답을 보시기 전에 직접 풀어보시기를 권해드립니다.


Bandit level20

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: To beat this level, you need to login twice: once to run the setuid command, and once to start a network daemon to which the setuid will connect.

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

Commands you may need to solve this level

ssh, nc, cat

레벨 목표

homedirectory에는 다음을 수행하는 setuid 바이너리가 있습니다. 명령 줄 인수로 지정한 포트에서 localhost에 연결합니다. 그런 다음 연결에서 텍스트 줄을 읽고 이전 수준의 암호 (bandit20)와 비교합니다. 암호가 맞으면 다음 단계 (bandit21)의 암호를 전송합니다.

참고 :이 수준을이기려면 setuid 명령을 실행하기 위해 한 번, setuid가 연결할 네트워크 데몬을 시작하기 위해 한 번 두 번 로그인해야합니다.

참고 2 : 자신의 네트워크 데몬에 연결하여 생각대로 작동하는지보십시오

이 레벨을 해결하는 데 필요할 수있는 명령

ssh, nc, cat


[문제 풀이]

이번문제도 setuid가 걸려있는 바이너리 파일을 사용하는 문제다. 문제를 보면 지정한 포트에서 localhost 연결 후 이전 수준의 암호를 비교해서 맞으면 다음 레벨의 암호를 전송해준다고 한다. 비교할 두 개의 터미널이 필요할 것 같다. 일단 setuid파일이 있는지 확인해보자.


suconnect라는 파일에 bandit21권한의 setuid가 걸려있다. 파일을 실행해본다.


프로그램에 대한 설명이 나오는데 TCP를 사용하여 localhost의 주어진 포트에 연결해서 올바른 암호를 받으면 다음 암호가 다시 전송된다고 한다. 포트를 여는 터미널을 터미널1, 접속하는 터미널을 터미널2라고 칭하겠다. 터미널1에서 nc를 이용해서 임의의 포트를 연다. 

#> nc -l 33333


그리고 터미널2에서 주어진 setuid걸린 파일로 33333포트에 연결한다.

#> ./suconnect 33333


다시 터미널1에서 level20의 암호를 전송하니 다음 레벨의 암호를 전송해준다.


터미널2를 확인해보면 패스워드가 일치하고 다음 패스워드를 보냈다는 문구를 확인할 수 있다.


리눅스(Linux) Netcat(nc) 명령어 [링크]

next level password : gE269g2h3mw3pwgrj0Ha9Uoqen1c9DGr

반응형

'War Game > bandit' 카테고리의 다른 글

Bandit level22  (0) 2017.04.10
Bandit level21  (0) 2017.04.10
Bandit level19  (0) 2017.04.06
Bandit level18  (0) 2017.04.06
Bandit level17  (0) 2017.04.06
TAGS.

Comments