loading
본문 바로가기 메뉴 바로가기

티스토리 뷰

카테고리 없음

Bandit lv 23 -> lv 24

Tip_srevil 2022. 1. 5. 11:50
반응형

이번 level 역시 특별한 부분은 없습니다. 다만 난이도가 조금 올라간 정도에요.

NOTE 부분을 통해 저희 스스로 shell-script를 만들어야 함을 인지할 수 있습니다.

NOTE2 부분을 통해 저희가 만든 shell-script는 한번 실행되고 삭제됨을 알 수 있습니다.

앞 시간에서는 모르고 지나갔지만 이번 lv을 친구와 같이 해결하면서 새롭게 알게 된 사실들이 있습니다.

위 내용을 풀이하면서 설명하겠습니다.

우선 저희는 cron의 역할을 알고 있습니다.

대충 요약하자면 주기적인 작업을 관리하는 것입니다.

cron.d 역시 Bandit lv21 -> lv 22 에서 배웠습니다.

그 내용을 보면 cron.d는 주기적인 작업을 등록하는 공간이라고 합니다.

즉 /ect/cron.d/cronjob_bandit24 는 특정주기마다 자동으로 실행되는 프로그램이라고 생각할 수 있습니다.

cronjob_bandit24 가 실행될 때 bandit24의 계정으로 로그인 됨을 알 수 있고,

* * * * * 을 통해 매 분 실행된다는 사실을 알 수 있습니다.

그럼 실행파일인 /usr/bin/cronjob_bandit24.sh 가 무엇인지 볼까요?

여기서 중요한 사실은 whoami 에 bandit24 가 들어가는 것이다.

그 이유는 /etc/cron.d/cronjob_bandit24에서 @reboot bandit24 라는 문구가 있었기 때문이다.

cd를 통해 /var/spool/$myname 로 이동해서 아래 작업들을 함을 알아야 한다.

for i in * .*; 은 모든 파일을 i 에 대입하겠음을 의미한다 ( 반복문 )

>> 솔직히 * 과 * .* 의 차이는 잘 모르겠다. 이후 깨닫게되면 다시 정리할 예정

if 문을 해설하기 전에 알야아하는 사실이 있다.

위 사진에서 알 수 있다시피 . .. 이라는 파일은 따로 생성하지 않아도 항상 존재한다.

[ . : 현재 디렉터리 / .. : 상위 디렉터리 ]

또 -a 는 and를 의미한다.

그럼 저 if 문 조건을 이해할 수 있다.

$i에 대입된 것이 . 과 ..이 아니라면(즉, 우리가 작성한 쉘 스크립트 파일에 대해서만 조건문 실행)

then 이하의 내용을 실행하라는 뜻이다.

stat은 파일의 상태를 출력하는 명령어인데 아래와 같은 형태로 출력된다.

그리고 --format 은 출력형태를 뒤에 지정한 형태로 출력함을 뜻한다.

%U는 파일 소유자의 사용자명을 의미한다

그래서 저 구문을 실행해보면 위와 같은 결과를 알 수 있음.

그 밑의 if 문을 보면, $owner = bandit23을 볼 수 있는데,

이를 통해 우리는 shell-script를 만들어 /var/spool/bandit24에 넣어줘야함을 알 수 있다.

그래야 그 밑에가 계속 진행되기 때문.

timeout : 특정 명령어나 프로세스의 실행 시간을 제한해야 할 경우 이용.

-s : 초를 의미

9 : SIGKILL(강제종료신호)

즉 timeout -s 9 60 ./$i 는 $i를 60초 동안 실행하고 이후 SIGKILL 을 하는 것이다.

위 명령을 처리하고 난 후에 rm 을 이용해 파일을 삭제하는 모습이다.

이제 문제 파악이 끝났으니 해설로 들어가보자.

위 그림을 통해 /var/spool/bandit24에 우리는 쓰기 및 실행 권한만 있음을 알 수 있다.

그렇다면, 우리에게 필요한 것은 bandit24의 비밀번호를 가져오는 script임.

tmp에 새로운 디렉터리를 만들고 진행하자.

tmp에 bt24라는 dir을 만들고 그 안에 bandit24의 비밀번호를 /tmp/bt24/answer 로 가져오는

script를 작성했다.

이제 이 파일을 /var/spool/bandit24에 넣어주면 됨.(앞서 확인했다시피 쓰기 권한이 있으므로 가능)

우리가 만든 ans의 파일 권한을 보니 그 누구도 실행은 할 수 없는 형태다.

그러므로 우리는 chmod를 이용해 권한을 변경할 계획이다.

그럼 이제 ans 파일을 /var/spool/bandit24 로 옮기고 기다리면 된다.(1분)

그럼 위와 같은 결론을 내릴 수 있다.


정리

오늘 내용은 뒤죽박죽이었기에 정리를 하겠다.

1. /etc/cron.d/cronjob_bandit24 내용을 확인하니 bandit24로 로그인해서 매분 실행됨을 알았다.

2. /usr/bin/cronjob_bandit24.sh 가 실행파일인데, 내용을 확인해봄.

3. 첫 if 문과 /var/spool/bandit24의 권한을 통해 새로운 파일이 필요함을 추측

4. 두번째 if 문을 통해 새로운 파일은 bandit23(현재 계정) 에서 만들어야함을 알 수 있음

5. ans라는 파일을 만들고 난 후 다른 이들이(bandit24) 가 실행하기 위해서 권한 수정이 필요함

6. 권한 수정 후 /var/spool/bandit24에 넣어주면 cron에 의해 자동으로 다음 주기에 실행됨을 알 수 있음.

정리는 이 정도이며, 자세한 내용은 위에 있음.


New

1. cron 추가 자료 : * * * * *(5자리)는 순서대로 분, 시, 일, 월, 요일 임.

[ 참조 : cron - Wikipedia ]

2. /var/spool 은 미래의 자겁을 기다리는 자료들의 임시 저장 공간임.

>>tmp 역시 임시 공간이지만, tmp는 프로그램 실행 시 임시로 생성되는 파일을 저장한다는 차이점이 있음

[ 참조 : 리눅스 디렉토리 종류와 특징 : 네이버 블로그 (naver.com) ]

3. stat : 파일이나 파일 시스템의 상태를 출력하는 명령어

4. --format : 출력 형태를 지정할 때 사용

5. %U : 파일 소유자의 사용자명을 출력

6. timeout : 특정 명령어 또는 프로세스의 실행 시간을 제한해야 할 경우 이용.

7. timeout 에서 9 : SIGKILL, 즉, 강제종료를 의미

[ 참조 : 반달가면 : [bash: timeout] 특정 명령어/프로세스에 대한 실행 시간 제한 설정 (egloos.com) ]

 

반응형

Bandit lv 23 -> lv 24
본문 바로가기 메뉴 바로가기

티스토리 뷰

카테고리 없음

Bandit lv 23 -> lv 24

Tip_srevil 2022. 1. 5. 11:50
반응형

이번 level 역시 특별한 부분은 없습니다. 다만 난이도가 조금 올라간 정도에요.

NOTE 부분을 통해 저희 스스로 shell-script를 만들어야 함을 인지할 수 있습니다.

NOTE2 부분을 통해 저희가 만든 shell-script는 한번 실행되고 삭제됨을 알 수 있습니다.

앞 시간에서는 모르고 지나갔지만 이번 lv을 친구와 같이 해결하면서 새롭게 알게 된 사실들이 있습니다.

위 내용을 풀이하면서 설명하겠습니다.

우선 저희는 cron의 역할을 알고 있습니다.

대충 요약하자면 주기적인 작업을 관리하는 것입니다.

cron.d 역시 Bandit lv21 -> lv 22 에서 배웠습니다.

그 내용을 보면 cron.d는 주기적인 작업을 등록하는 공간이라고 합니다.

즉 /ect/cron.d/cronjob_bandit24 는 특정주기마다 자동으로 실행되는 프로그램이라고 생각할 수 있습니다.

cronjob_bandit24 가 실행될 때 bandit24의 계정으로 로그인 됨을 알 수 있고,

* * * * * 을 통해 매 분 실행된다는 사실을 알 수 있습니다.

그럼 실행파일인 /usr/bin/cronjob_bandit24.sh 가 무엇인지 볼까요?

여기서 중요한 사실은 whoami 에 bandit24 가 들어가는 것이다.

그 이유는 /etc/cron.d/cronjob_bandit24에서 @reboot bandit24 라는 문구가 있었기 때문이다.

cd를 통해 /var/spool/$myname 로 이동해서 아래 작업들을 함을 알아야 한다.

for i in * .*; 은 모든 파일을 i 에 대입하겠음을 의미한다 ( 반복문 )

>> 솔직히 * 과 * .* 의 차이는 잘 모르겠다. 이후 깨닫게되면 다시 정리할 예정

if 문을 해설하기 전에 알야아하는 사실이 있다.

위 사진에서 알 수 있다시피 . .. 이라는 파일은 따로 생성하지 않아도 항상 존재한다.

[ . : 현재 디렉터리 / .. : 상위 디렉터리 ]

또 -a 는 and를 의미한다.

그럼 저 if 문 조건을 이해할 수 있다.

$i에 대입된 것이 . 과 ..이 아니라면(즉, 우리가 작성한 쉘 스크립트 파일에 대해서만 조건문 실행)

then 이하의 내용을 실행하라는 뜻이다.

stat은 파일의 상태를 출력하는 명령어인데 아래와 같은 형태로 출력된다.

그리고 --format 은 출력형태를 뒤에 지정한 형태로 출력함을 뜻한다.

%U는 파일 소유자의 사용자명을 의미한다

그래서 저 구문을 실행해보면 위와 같은 결과를 알 수 있음.

그 밑의 if 문을 보면, $owner = bandit23을 볼 수 있는데,

이를 통해 우리는 shell-script를 만들어 /var/spool/bandit24에 넣어줘야함을 알 수 있다.

그래야 그 밑에가 계속 진행되기 때문.

timeout : 특정 명령어나 프로세스의 실행 시간을 제한해야 할 경우 이용.

-s : 초를 의미

9 : SIGKILL(강제종료신호)

즉 timeout -s 9 60 ./$i 는 $i를 60초 동안 실행하고 이후 SIGKILL 을 하는 것이다.

위 명령을 처리하고 난 후에 rm 을 이용해 파일을 삭제하는 모습이다.

이제 문제 파악이 끝났으니 해설로 들어가보자.

위 그림을 통해 /var/spool/bandit24에 우리는 쓰기 및 실행 권한만 있음을 알 수 있다.

그렇다면, 우리에게 필요한 것은 bandit24의 비밀번호를 가져오는 script임.

tmp에 새로운 디렉터리를 만들고 진행하자.

tmp에 bt24라는 dir을 만들고 그 안에 bandit24의 비밀번호를 /tmp/bt24/answer 로 가져오는

script를 작성했다.

이제 이 파일을 /var/spool/bandit24에 넣어주면 됨.(앞서 확인했다시피 쓰기 권한이 있으므로 가능)

우리가 만든 ans의 파일 권한을 보니 그 누구도 실행은 할 수 없는 형태다.

그러므로 우리는 chmod를 이용해 권한을 변경할 계획이다.

그럼 이제 ans 파일을 /var/spool/bandit24 로 옮기고 기다리면 된다.(1분)

그럼 위와 같은 결론을 내릴 수 있다.


정리

오늘 내용은 뒤죽박죽이었기에 정리를 하겠다.

1. /etc/cron.d/cronjob_bandit24 내용을 확인하니 bandit24로 로그인해서 매분 실행됨을 알았다.

2. /usr/bin/cronjob_bandit24.sh 가 실행파일인데, 내용을 확인해봄.

3. 첫 if 문과 /var/spool/bandit24의 권한을 통해 새로운 파일이 필요함을 추측

4. 두번째 if 문을 통해 새로운 파일은 bandit23(현재 계정) 에서 만들어야함을 알 수 있음

5. ans라는 파일을 만들고 난 후 다른 이들이(bandit24) 가 실행하기 위해서 권한 수정이 필요함

6. 권한 수정 후 /var/spool/bandit24에 넣어주면 cron에 의해 자동으로 다음 주기에 실행됨을 알 수 있음.

정리는 이 정도이며, 자세한 내용은 위에 있음.


New

1. cron 추가 자료 : * * * * *(5자리)는 순서대로 분, 시, 일, 월, 요일 임.

[ 참조 : cron - Wikipedia ]

2. /var/spool 은 미래의 자겁을 기다리는 자료들의 임시 저장 공간임.

>>tmp 역시 임시 공간이지만, tmp는 프로그램 실행 시 임시로 생성되는 파일을 저장한다는 차이점이 있음

[ 참조 : 리눅스 디렉토리 종류와 특징 : 네이버 블로그 (naver.com) ]

3. stat : 파일이나 파일 시스템의 상태를 출력하는 명령어

4. --format : 출력 형태를 지정할 때 사용

5. %U : 파일 소유자의 사용자명을 출력

6. timeout : 특정 명령어 또는 프로세스의 실행 시간을 제한해야 할 경우 이용.

7. timeout 에서 9 : SIGKILL, 즉, 강제종료를 의미

[ 참조 : 반달가면 : [bash: timeout] 특정 명령어/프로세스에 대한 실행 시간 제한 설정 (egloos.com) ]

 

반응형