Level19 → Level20
다음 레벨에 액세스하려면 홈 디렉토리에있는 setuid 바이너리를 사용해야합니다.
사용 방법을 찾으려면 인수없이 실행하십시오.
이 레벨의 비밀번호는 setuid 바이너리를 사용한 후 일반적인 위치 (/ etc / bandit_pass)에서 찾을 수 있습니다.
$ ls
$ ls -al ./bandit20-do
$ ./bandit20-do id
uid = 11019(bandit19) gid = 11019(bandit19) euid=11020(bandit20) groups=11019(bandit19)
bandit20의 권한으로 실행이 되는 프로그램이다.
$ ls /etc/bandit_pass/bandit*
$ ls /etc/bandit_pass/bandit20
$cat /etc/bandit_pass.bandit20
$ ./bandit20-do cat /etc/bandit_pass/bandit20
bandit19의 cat으로는 접근할 수 없지만 bandit20으로 권한상승하여 접근할 수 있다.
이를 통하여 다음과 같은 비밀번호를 얻을 수 있다.
GbKksEFF4yrVs6il55v6gwY5aVje5f0j
Level20 → Level21
문제해설)
홈 디렉터리에는 setuid binary가 있다: 이것은 너가 집중하고자 하는 포트의 localhost와 명령어를 사용하는 것과 같이 연결을 해준다. 그러면 그것은 텍스트를 읽고 전단계(bandit20)의 패스워드와 비교해 만약 패스워드가 맞다면
다음단계(bandit21)의 것으로 바꾸어줄 것이다.
NOTE: 너가 생각하는 대로 작동되는 지를 보려면 너의 네트워크로 연결을 시도해보아라.
문제풀이)
nc명령어를 이용하는데, 새롭게 포트를 열어주기 때문에 -l 옵션을 사용하며,
포트번호는 임의로 7777로 한다. 이를 백그라운드에서 실행하고자 할 때에는 뒤에 &를 붙인다.
그 다음, suconnect로 포트 7777에 접속한다.
패스워드가 일치한다는 멘트와 함께 다음 단계의 패스워드가 주어진다.
Level21 → Level22
문제 해설)
프로그램은 cron에서 정기적으로 실행되고, 이것은 시간 기반 작업 스케쥴러이다. /etc/cron.d/를 보고 무슨 명령이 실행되는 지를 보면 cronjob으로 사작하는 파일들이 아주 많다. 이 파일들의 형식을 보니 ASCII텍스트 파일이다.
이중 bandit22파일이 패스워드를 알려주는 파일인것 같다. cronjob_bandit22 파일을 읽어보니 두개의 문장이 나온다.
*로 이루어진 부분은 앞에서부터 분, 시, 일, 월, 요일을 나타내는데
모두 다 *로 표시되어 있으므로 매달, 매일, 매시간을 나타낸다.(항상) 그리고 유저의 이름이 나타나 있다.
마지막으로 명령어가 적혀있다. /usr/bin/cronjob_bandit222.sh 쉘 스크립트 파일을 백그라운드에서 실행하고 결과값은 화면에 출력하지 않고 리눅스의 휴지통으로 출력하라는 명령어 이다.
cronjob_bandit22.sh 파일을 읽어보면 /tmp/t706……. 이라는 파일의 권한을 644로 설정하고
이 파일안에 패스워드가 있는 파일을 복사해준다는 내용의 파일이다.
그러니 이 /tmp/t706……..파일에 패스워드가 있다는 것이고 이 파일을 읽어주면 패스워드를 획득할 수 있다.
Level22 → Level23
프로그램은 시간 기반 작업 스케줄러인 cron에서 정기적으로 실행된다.
/etc/cron.d/에서 구성을 찾고 실행중인 명령을 확인하라고 한다.
이번 문제는 쉘 스크립트를 읽어야 한다.
mytarget을 찾아야 하는 것을 볼 수 있다.
myname 은 bandit23 이므로
ehco I am user bandit23 | md5sum | cut -d ‘ ‘ -f 1 명령을 적어준다.
mytarget은 8ca319486bfbbc3663ea0fbe81326349 이다.
이걸 tmp 디렉터리에서 읽어주면 된다.
패스워드를 찾았다.
Level23 → Level24
bandit 23에 접속을 한뒤, /etc/cron.d/ 를 읽어보면
60초 주기로 모든 파일이 삭제 될때까지 동작하는 것을 볼 수 있다.
/var/spool/bandit24 안에 있는 모든 스크립트를 실행시킨 뒤 60초 후에 지우기 때문에 지워지기 전에 /etc/bandit_pass/bandit24 안에 있는 내용을 복사하자.
우선 tmp 에 본인의 폴더를 생성한 뒤 dump.sh라는 파일을 통해 bandit24 비밀번호를 본인의 폴더에 복사시킨다.
그런 뒤에는 디렉토리와 파일에 권한을 부여하고
마지막으로 dump.sh를 /var/spool/bandit24로 복사해준 다음 password를 확인한다.
'5. 방학 활동 > Write UP' 카테고리의 다른 글
[2021.07.23] Dreamhack Wargame팀 풀이 (1) | 2021.07.23 |
---|---|
[2021/02/23] bandit wargame Level24 ~ Level31 (0) | 2021.03.24 |
[2021/02/18] bandit wargame Level14 ~ Level18 (0) | 2021.03.24 |
[2021/02/16] bandit wargame Level9 ~ Level13 (1) | 2021.03.24 |
[2021/02/11] bandit wargame Level4 ~ Level8 (0) | 2021.03.24 |