김승현

[OverTheWire] Bandit Level 22 → Level 23 본문

Linux/OverTheWire : Bandit

[OverTheWire] Bandit Level 22 → Level 23

kshind 2023. 2. 20. 14:44

문제

문제 원문

프로그램은 cron으로 규칙적인 텀마다 자동으로 실행되는 시간 기반의 작업 스케쥴러라고 하고 /etc/cron.d를 봐서

설정이나 어떤 커맨드가 실행되고 있는지 보라는 말인 것 같다.

NOTE : 다른 사람들에 의해 쓰여진 셸 스크립트는 유용하다. 이 단계의 스크립트는 의도적으로 읽기 쉽게 만들어졌다고 한다. 

 

풀이

(ls -al을 해도 얻을 힌트가 없는 것 같아서 하지 않았습니다.)

저번 21 → 22단계를 풀었던 것처럼 문제에 적혀 있는 cd를 사용해서 /etc/cron.d/에 들어가보면 많은 파일들이 있는데

우리는 23level을 가야 되기 때문에 cronjob_bandit23을 봐야 될 것 같다.

간단하게 설명하면 부팅을 할 때마다, 그리고 매시 매분마다

/usr/bin/cronjob_bandit23.sh를 쓰레기통으로 보낸다는 내용이다.


위 cronjob_bandit23의 내용이 조금 더 자세하게 궁금하다면 이전 글을 참고하면 좋을 것 같다. 

 

[OverTheWire] Bandit Level 21 → Level 22

문제 프로그램은 cron으로 규칙적인 텀마다 자동으로 실행되는 시간 기반의 작업 스케쥴러라고 하고 /etc/cron.d를 봐서 설정이나 어떤 커맨드가 실행되고 있는지 보라는 말인 것 같다. 아닐 수도

kshind.tistory.com


쓰레기통에 보내지는 게 수상해서 cat을 사용해서 확인해보면 5줄 정도 되는 짧은 코드가 출력된다.

#!/bin/bash

myname=$(whoami)  # bandit23파일이기 때문에 myname 변수에 bandit23을 저장
mytarget=$(echo I am user $myname | md5sum | cut -d ' ' -f 1)  # I am user bandit23을 md5해시로 변환시키고
                                                                                                        구분자를 ' '로 지정 후 첫 번째 필드를 mytarget 변수에 저장

echo "Copying passwordfile /etc/bandit_pass/$myname to /tmp/$mytarget"  # 해당 내용을 출력

cat /etc/bandit_pass/$myname > /tmp/$mytarget  # tmp/$mytarget에 23의 password가 저장

password가 저장된 곳을 디렉토리를 알기 위해서 $mytarget에 저장된 값을 알아야 한다.

그렇기 때문에 mytarget 변수를 저장하는 코드인 echo I am user $myname ...... -f 1) 내용을 우리가 입력해야 한다.

저 스크립트의 경우 myname 변수를 whoami를 통해 가져왔지만 우리는 그냥 한 줄로 입력하는 중이기 때문에

$myname 자리에 bandit23을 바로 입력해주면 우리가 원하는 md5값을 얻을 수 있다.

얻은 md5값을 password가 저장된 /tmp/$mytarget 자리에 대신 입력하면 23의 password를 얻을 수 있다.

 

 


다음 문제

https://kshind.tistory.com/25

 

[OverTheWire] Bandit Level 23 → Level 24

문제 제시된 명령어가 같으면 내용도 거의 비슷한 내용들인 것 같다. 프로그램은 cron으로 규칙적인 텀마다 자동으로 실행되는 시간 기반의 작업 스케쥴러라고 하고 /etc/cron.d를 봐서 설정이나 어

kshind.tistory.com