라쿤시티는 레드라쿤 Red Raccoon 유튜브 채널의 그루트님과 시큐리티최님이 운영하는 워게임 사이트이다.
URL: ctf.redraccoon.kr
git log 명령어 실행시 플래그가 나온다.
~/.git/logs/HEAD 파일 안에 플래그가 있다.
7c2kCGahUE1HABrSsm5
라쿤시티는 레드라쿤 Red Raccoon 유튜브 채널의 그루트님과 시큐리티최님이 운영하는 워게임 사이트이다.
URL: ctf.redraccoon.kr
git log 명령어 실행시 플래그가 나온다.
~/.git/logs/HEAD 파일 안에 플래그가 있다.
7c2kCGahUE1HABrSsm5
라쿤시티는 레드라쿤 Red Raccoon 유튜브 채널의 그루트님과 시큐리티최님이 운영하는 워게임 사이트이다.
URL: ctf.redraccoon.kr
xxd 명령으로 hexdump 결과를 보니 key is 53 문자열은 암호화되지 않았고 key가 53임을 알 수 있다. 정확히는 0x53이다.
xorkey=0x53
with open('rcity15-data.bin','rb') as f:
encrypted=f.read()
decrypted=''
for b in encrypted:
decrypted+=chr(b^xorkey)
print(decrypted)
tmp 폴더 내부에서 python 코드로 xor 암호화를 실행한다.
힌트에서 비밀번호는 늘 19 자리의 문자열이라고 했기에 19 글자를 앞에서부터 자른다. 참고로 key is 53 부분도 xor 암호화 되었기에 더 길어진 것이다.
z6Q3m8X4s1G5h9R7d0L
라쿤시티는 레드라쿤 Red Raccoon 유튜브 채널의 그루트님과 시큐리티최님이 운영하는 워게임 사이트이다.
URL: ctf.redraccoon.kr
sudo -l 명령을 실행한다.
/usr/bin/find 명령을 rcity15 권한으로 비밀번호 없이 실행할 수 있게 설정되어 있다.
https://gtfobins.github.io/gtfobins/find/
gtfobins의 find 명령어 설명을 보면 sudo가 설정되어 있을 경우 아래의 명령어로 쉘을 획득할 수 있다고 한다.
단순히 sudo find라고 하면 root 권한으로 find 명령을 실행할거라는 의미기에 -u rcity15를 명시해 rcity15의 권한으로 find 명령을 실행한다.
flag가 나온다.
라쿤시티는 레드라쿤 Red Raccoon 유튜브 채널의 그루트님과 시큐리티최님이 운영하는 워게임 사이트이다.
URL: ctf.redraccoon.kr
rcity13-binary에 setuid가 설정되어 있다. 그리고 rcity13-binary 사용법이 나온다.
환경변수 중에 README라는 특이한 변수가 있다. 비밀번호로 이용한다.
/bin/bash -p 명령을 실행한다. -p 옵션은 euid가 유지된 채로 bash 쉘을 실행시킨다. 즉 rcity14 권한으로 쉘을 실행한다.
flag 값이 나온다.
라쿤시티는 레드라쿤 Red Raccoon 유튜브 채널의 그루트님과 시큐리티최님이 운영하는 워게임 사이트이다.
URL: ctf.redraccoon.kr
tutorial 링크에 설명이 자세히 나와있다.
scp -P 31338 rcity11@red.redraccoon.kr:* .
명령을 이용해서 rcity11 홈 디렉터리의 파일 2개를 가져온다.
wget으로 아래의 링크를 다운 받거나 칼리에 이미 있는 /usr/share/john/ssh2john.py 를 이용한다
https://raw.githubusercontent.com/openwall/john/bleeding-jumbo/run/ssh2john.py
다운 받았으면 python ssh2john.py id_rsa.rcity12 > id_rsa.hash 명령을 실행한다.
openssh key를 john에 사용할 수 있게 변환하는 것 같다.
아래의 명령을 실행한다. 주어진 wordlist.txt는 적용이 안 된다. 그래서 john the ripper가 기본적으로 사용하는 파일을 이용하였다.
wordlist.txt와 password.lst 파일 차이는 구분자가 ',' 인 것과 '\n'인 것이다. 그래서 wordlist.txt 파일을 이용해 아래의 명령어로 password.lst와 동일한 형식의 파일 word.txt를 만들었다.
sed 's/,/\n/g' wordlist.txt > word.txt
',' 를 '\n'으로 치환하여 word.txt 파일을 생성하여 저장한다.
passpharse에 sayang을 입력하면 rcity12로 접속된다. 내부에 플래그 파일이 있다.
라쿤시티는 레드라쿤 Red Raccoon 유튜브 채널의 그루트님과 시큐리티최님이 운영하는 워게임 사이트이다.
URL: ctf.redraccoon.kr
file 명령어로 파일 형식을 확인하면서 파일 형식에 맞게 압축을 계속 풀면 된다.
gzip으로 압축해제시 파일 이름 끝을 .gz로 바꿔야한다.
라쿤시티는 레드라쿤 Red Raccoon 유튜브 채널의 그루트님과 시큐리티최님이 운영하는 워게임 사이트이다.
URL: ctf.redraccoon.kr
모든 작업은 /tmp 내부에서 이뤄진다.
open 포트 번호를 ','로 연결한 문자열을 만드는 명령어
cat nmap-result.txt | awk '{print $1}' | cut -d'/' -f1 | tr '\n' ',' > key.txt
cat nmap-result.txt : nmap-result.txt 내용 출력
awk '{print $1}' : 첫번째 열만 출력 (결과값: 21/tcp 형태)
cut -d'/' -f1 : '/' 를 구분자로 했을때 첫번째 열만 출력 (결과값: 21 형태)
tr '\n' ',' : 개행 문자를 ','로 치환
최종 결과값을 key.txt에 저장. 마지막 포트 번호 뒤에도 ',' 붙기 때문에 파일을 열어서 마지막 ','는 제거한다.
라쿤시티는 레드라쿤 Red Raccoon 유튜브 채널의 그루트님과 시큐리티최님이 운영하는 워게임 사이트이다.
URL: ctf.redraccoon.kr
"flag: " 문자열이 나올때까지 base64 디코딩 하면서 찾는다.
import base64
def find_flag(filename):
with open(filename, 'r') as file:
content = file.read()
while TRUE:
if "flag:" in content:
print("Flag found!")
print(content)
return
else:
print("Flag not found")
content=base64.b64decode(content).decode('utf-8')
find_flag('flag.txt')
실행 명령어: python3 <파일명>
/tmp 폴더 내부에서 작업해야한다.
#!/bin/bash
filename="flag.txt"
while true; do
echo "Decoding $filename..."
# Decode the content and update the filename
decoded_content=$(base64 -d "$filename" 2>/dev/null)
echo "$decoded_content" > "$filename"
# Check if the flag string is present
if grep -q "flag:" "$filename"; then
echo "Flag found!"
cat "$filename"
break
fi
done
chatgpt를 이용해서 bash 스크립트를 만들어보았다.
chmod +x 파일명; chmod u+w flag.txt
./파일명
명령을 차례대로 입력하면 flag가 나온다. 마찬가지로 /tmp 내부에서 작업해야한다.