OverTheWire/Bandit

OvertheWire Bandit Level 21 → 22 ~ 22 → 23

Nesun 2021. 5. 24. 21:20

Level 21 → 22


문제 : 프로그램은 시간 기반 작업 스케줄러 인 cron에서 정기적으로 자동으로 실행됩니다. /etc/cron.d/에서 구성을 찾고 실행중인 명령을 확인하십시오

  bandit21@bandit:~$ cd /etc/cron.d
  bandit21@bandit:/etc/cron.d$ ls
  cronjob_bandit15_root  cronjob_bandit22  cronjob_bandit24
  cronjob_bandit17_root  cronjob_bandit23  cronjob_bandit25_root

우선 문제에서 주어진 경로로 가 확인해본다.

  bandit21@bandit:/etc/cron.d$ cat cronjob_bandit22
  @reboot bandit22 /usr/bin/cronjob_bandit22.sh &> /dev/null
  * * * * * bandit22 /usr/bin/cronjob_bandit22.sh &> /dev/null

다음 단계의 파일을 열어보면 위와같이 나온다.

  bandit21@bandit:/etc/cron.d$ cd /usr/bin/cronjob_bandit22.sh
  -bash: cd: /usr/bin/cronjob_bandit22.sh: Not a directory
  bandit21@bandit:/etc/cron.d$ cat cd /usr/bin/cronjob_bandit22.sh
  cat: cd: No such file or directory
  #!/bin/bash
  chmod 644 /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv
  cat /etc/bandit_pass/bandit22 > /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv

해당 경로의 파일을 읽어보면 이런게 나온다. 맨 마지막 줄을 보면 cat 명령어로 오른쪽 파일에 넣어놓았나보다.

  bandit21@bandit:/etc/cron.d$ cat /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv
  Yk7owGAcWjwMVRwrTesJEwB7WVOiILLI

읽어보면 비밀번호가 나온다.

Level 22 → 23


connect : ssh bandit22@bandit.labs.overthewire.org -p2220

password : Yk7owGAcWjwMVRwrTesJEwB7WVOiILLI

 

문제 : 프로그램은 시간 기반 작업 스케줄러 인 cron에서 정기적으로 자동으로 실행됩니다. /etc/cron.d/에서 구성을 찾고 실행중인 명령을 확인하십시오. 참고 : 다른 사람이 작성한 쉘 스크립트를 보는 것은 매우 유용한 기술입니다. 이 레벨의 스크립트는 의도적으로 읽기 쉽게 만들어졌습니다. 기능을 이해하는 데 문제가있는 경우 실행하여 인쇄되는 디버그 정보를 확인하십시오.

 

  bandit22@bandit:~$ cat /etc/cron.d/cronjob_bandit23
  @reboot bandit23 /usr/bin/cronjob_bandit23.sh  &> /dev/null
  * * * * * bandit23 /usr/bin/cronjob_bandit23.sh  &> /dev/null
  bandit22@bandit:~$ cat /usr/bin/cronjob_bandit23.sh
  #!/bin/bash

  myname=$(whoami)
  mytarget=$(echo I am user $myname | md5sum | cut -d ' ' -f 1)

  echo "Copying passwordfile /etc/bandit_pass/$myname to /tmp/$mytarget"

  cat /etc/bandit_pass/$myname > /tmp/$mytarget

이전 문제와 비슷하게 읽어보면 /tmp/$mytarget에 내용이 저장된 것을 확인할 수 있다.

  bandit22@bandit:~$ whoami
  bandit22

myname은 whoami의 값이 저장되어있다 확인해보면 bandit22으로 계정명이 들어간다. 다음레벨의 비밀번호를 얻어야하기 때문에 bandit23이 myname이 된다.

  myname=$(whoami)
  mytarget=$(echo I am user $myname | md5sum | cut -d ' ' -f 1)

echo는 출력해주는 것이므로 myname을 넣어서 실행해보겠다.

  echo I am user bandit23 | md5sum | cut -d ' ' -f 1
  8ca319486bfbbc3663ea0fbe81326349

위와 같은 값이 나온다. 비밀번호는 아니다.

  echo "Copying passwordfile /etc/bandit_pass/$myname to /tmp/$mytarget"

  cat /etc/bandit_pass/$myname > /tmp/$mytarget

값을 대입해보면 /tmp/8ca319486bfbbc3663ea0fbe81326349 라는 결과가 나온다.

  bandit22@bandit:~$ cat /tmp/8ca319486bfbbc3663ea0fbe81326349
  jc1udXuA1tiHqjIsL8yaapX5XIAI6i0n

 

해당 경로 파일을 읽어보면 비밀번호가 출력된다.


- 끝 -