1. 문제 정보

1) 목표

2) 정보

2. 문제 풀이

1) flag.txt 파일 분석

flag.txt 파일 확인

2) 반복 디코딩

셸 스크립트 작성

#!/bin/bash

# 안내 사항에 파일 생성 시 /tmp 디렉토리에 생성하라고 했으므로 파일을 옮긴다.
cp /home/rcity8/flag.txt /tmp/abc/flag.txt
# 실행을 위해서 권한을 변경해준다.
chmod 777 /tmp/abc/flag.txt
# 반복해서 사용할 값이므로 변수에 저장해준다. 여기서는 디코딩의 대상 파일
file="/tmp/abc/flag.txt"

# while true로 작성하는 경우 무한 루프로 동작한다. 
while true; do
				# 파일이 제대로 디코딩 되었는 지 확인하기 위해 md5 해시 값을 출력하여 확인
        checksum=$(md5sum "$file" | awk '{ print $1 }')
        echo "$checksum"
				# 해당 파일을 base64 디코딩 해준다.
        a=$(base64 -d /tmp/abc/flag.txt)
				# 디코딩한 값을 다시 원래 파일에 넣어준다.
        echo "$a" > /tmp/abc/flag.txt
				# 해당 파일의 결과에 flag: 라는 문자열이 있는 지 확인해본다.
        b=$(cat /tmp/abc/flag.txt | grep -C 2 "flag:")
				# 있다면 문자열을 주변 2줄을 출력한다.
        if [ -n "$b" ]; then
                echo $b
                break
        fi
done

결과 확인

Untitled