풀이
rcity15@9947d876f6e5:~$ ls
rcity14-flag.txt rcity15-data.bin
rcity15@9947d876f6e5:~$ file rcity15-data.bin
rcity15-data.bin: data
rcity15@9947d876f6e5:~$ xxd rcity15-data.bin
00000000: 273b 3673 353f 3234 733a 2073 2965 0260 ';6s5?24s: s)e.`
00000010: 3e6b 0b67 2062 1466 3b6a 0164 3763 1f0a >k.g b.f;j.d7c..
00000020: 0a6b 6579 2069 7320 3533 0a .key is 53.
rcity15-data.bin 이라는 바이너리 파일이 있는데 파일 형식은 data로 되어있다xxd 명령어를 통해서 파일이나 표준 입력에서 16진수 덤프를 생성하거나 16진수 덤프를 파일에 기반으로 원래 바이너리 형식으로 되돌린다
알수없는 문자열과 key is 53 이다 라는 것이 출력되었다 문제에서 키를 알려주는 일부분인 것같다
일반적인 53이라는 문자열 일 수도 있지만 hex로 봤을때 0x53일 수도 있다 그래서 복호화를 해야한다
이부분은 좀 어려워서 강의를 듣고 진행을 하였다.
rcity15@9947d876f6e5:/tmp/jeff$ ls
rcity15@9947d876f6e5:/tmp/jeff$ cp /home/rcity15/rcity15-data.bin .
rcity15@9947d876f6e5:/tmp/jeff$ ls
rcity15-data.bin
rcity15@9947d876f6e5:/tmp/jeff$ vim hex.py
rcity15@9947d876f6e5:/tmp/jeff$ ls
hex.py rcity15-data.bin
rcity15@9947d876f6e5:/tmp/jeff$ python3 hex.py
the flag is z6Q3m8X4s1G5h9R7d0LYY86*s: sf`Y
rcity15@9947d876f6e5:/tmp/jeff$ echo "z6Q3m8X4s1G5h9R7d0LYY86*s" | cut -c 19
L
rcity15@9947d876f6e5:/tmp/jeff$ echo "z6Q3m8X4s1G5h9R7d0LYY86*s: sf`Y" | cut -c -19
> ^C
rcity15@9947d876f6e5:/tmp/jeff$ echo 'z6Q3m8X4s1G5h9R7d0LYY86*s: sf`Y' | cut -c -19
z6Q3m8X4s1G5h9R7d0L
rcity15@9947d876f6e5:/tmp/jeff$
xorkey = 0x53
# ricty15-data.bin 파일을 바이트 형태로 가져온 다음에 그 모든 형태를 encrypted_data 변수에 저장
with open('rcity15-data.bin', 'rb') as f:
encrypted_data = f.read()
decrypted = ""
# encrypted_data라는 변수를 돌면서 한 바이트당 복호화한다음에 decrypted라는 변수에 넣고 출력
for b in encrypted_data:
decrypted += chr(b ^ xorkey)
print(decrypted)
'rcity' 카테고리의 다른 글
rcity17 Write-Up (0) | 2024.04.02 |
---|---|
rcity16 Write-Up (0) | 2024.04.02 |
rcity14 Write-Up (0) | 2024.04.01 |
rcity13 Write-Up (0) | 2024.04.01 |
rcity12 Wirte-Up (0) | 2024.04.01 |