2023. 7. 17. 09:34ㆍWar Game/OverTheWire
문제
홈 디렉토리에는 다음 명령을 수행하는 setuid 바이너리 파일이 있다고 한다. 매개변수로 지정한 포트에서 localhost에 연결 후에 한 줄의 텍스트를 읽고 bandit20 계정의 암호와 비교한다. 암호가 일치하면 다음 단계 bandit21 계정의 암호를 전송한다고 한다.
Keyword
ssh, nc, cat, bash, scree, tmux
풀이
ls
./suconnect
우선 홈 디렉토리에 ls 명령어를 사용해서 바이너리 파일이 있는 것을 확인 후 실행시켜 정보를 확인하였다. 바이너리 파일의 내용을 대강 해석하자면 이 프로그램은 TCP를 사용하여 localhost에서 어떤 포트를 열었을 때 그 포트로 연결시키며, 만약 다른 쪽(그러니까 어떤 포트를 연 쪽)에서 정확한 암호를 받았을 시 다음 단계의 암호를 되돌려준다는 뜻으로 볼 수 있다. 그렇다면 세션을 분리한 후에 한쪽에서는 포트를 열고 다른 한쪽에서는 바이너리 파일을 사용하면 얼추 될 것 같다는 생각이 들었다.
tmux new -s test_bandit20
[Ctrl+b] %
문제에서 세션을 분리하는 명령어들 (screen, tmux 등)을 알려주었으며 그중에 tmux 명령어를 사용해서 test_bandit20이라는 세션을 하나 분리 하였다.
nc -kl 7777 (test_bandit20 세션에서 실행)
./suconnect 7777 (기본 세션에서 실행)
test_bandit20 세션에서 nc 명령어를 사용하여 7777번 포트를 열고 수신 대기하였으며 기본 세션에서 바이너리 파일을 사용 후 7777번에 연결을 하였다.
이후 포트를 연 test_bandit20 세션에 bandit20의 암호를 입력했더니 기본 세션에서 암호가 일치하는지 텍스트가 출력되면서 알려준 후에 test_bandit20 세션에 다음 단계 bandit21 계정의 암호를 출력하였다.
'War Game > OverTheWire' 카테고리의 다른 글
[OverTheWire:Bandit] Level 22 ~ Level 23 (0) | 2023.07.17 |
---|---|
[OverTheWire:Bandit] Level 21 ~ Level 22 (0) | 2023.07.17 |
[OverTheWire:Bandit] Level 19 ~ Level 20 (0) | 2023.07.16 |
[OverTheWire:Bandit] Level 18 ~ Level 19 (0) | 2023.07.16 |
[OverTheWire:Bandit] Level 17 ~ Level 18 (1) | 2023.07.16 |