김승현
[OverTheWire] Bandit Level 22 → Level 23 본문
문제
프로그램은 cron으로 규칙적인 텀마다 자동으로 실행되는 시간 기반의 작업 스케쥴러라고 하고 /etc/cron.d를 봐서
설정이나 어떤 커맨드가 실행되고 있는지 보라는 말인 것 같다.
NOTE : 다른 사람들에 의해 쓰여진 셸 스크립트는 유용하다. 이 단계의 스크립트는 의도적으로 읽기 쉽게 만들어졌다고 한다.
풀이
(ls -al을 해도 얻을 힌트가 없는 것 같아서 하지 않았습니다.)
저번 21 → 22단계를 풀었던 것처럼 문제에 적혀 있는 cd를 사용해서 /etc/cron.d/에 들어가보면 많은 파일들이 있는데
우리는 23level을 가야 되기 때문에 cronjob_bandit23을 봐야 될 것 같다.
간단하게 설명하면 부팅을 할 때마다, 그리고 매시 매분마다
/usr/bin/cronjob_bandit23.sh를 쓰레기통으로 보낸다는 내용이다.
위 cronjob_bandit23의 내용이 조금 더 자세하게 궁금하다면 이전 글을 참고하면 좋을 것 같다.
쓰레기통에 보내지는 게 수상해서 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를 얻을 수 있다.
다음 문제
'Linux > OverTheWire : Bandit' 카테고리의 다른 글
[OverTheWire] Bandit Level 24 → Level 25 (0) | 2023.02.20 |
---|---|
[OverTheWire] Bandit Level 23 → Level 24 (2) | 2023.02.20 |
[OverTheWire] Bandit Level 21 → Level 22 (0) | 2023.02.19 |
[OverTheWire] Bandit Level 20 → Level 21 (0) | 2023.02.19 |
[OverTheWire] Bandit Level 19 → Level 20 (0) | 2023.02.19 |