제공받은 zero.txt를 열면 다음과 같다.
전문은 이렇다.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus quis tempus ante, nec vehicula mi. Aliquam nec nisi ut neque interdum auctor. Aliquam felis orci, vestibulum sit amet ante at, consectetur lobortis eros. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In finibus magna mauris, quis auctor libero congue quis. Duis sagittis consequat urna non tristique. Pellentesque eu lorem id quam vestibulum ultricies vel ac purus.
ZWSP를 이용한 문제였다. ZWSP는 Zero Width SPace, 즉 폭없는 공백으로 단어의 단락을 나타낼 때 사용된다고 한다. 보통 한국어나 영어는 띄어쓰기를 하는 곳이 개행의 위치로 적절하다. 하지만 '/'뒤처럼 개행 포인트로 적절하지만 공백은 넣지 않은 곳, 일본어처럼 띄어쓰기를 하지 않을 때 개행할 위치를 명시하기 위해 '폭없는 공백'이 사용된다고 한다. 위키백과에서 간단한 예시를 찾았다.
폭 없는 공백을 사용하지 않은 예시는 개행없이 쭉 이어진다.
ZWSP는 말 그대로 폭이 없어서 육안으로 보이지 않는다. 그래서 어디에 얼마나 있는지도 알 수 없는데 티스토리 코드블럭에는 보였다. 개행은 되지 않았다. 이게 확실히 ZWSP인지는 모르겠지만.. 어쨌든 그런 것 같기도 하고..
다른 얘기지만 zero.txt에 있던 문자열도 의미가 있었다. 일명 'Lorem Ipsum(로렘 입숨)'. 페이지, 레이아웃 디자인 후 최종 아웃풋을 보기 위해 임의로 채워넣는 텍스트라고 한다. 'Lorem ipsum'이라고 구글링하던가 코드블럭 플러그인에서 입력만 해봤다면 풀 수 있었을지도 모르겠다.
이젠 zero.txt를 chrome으로 열어보자.
창 너비를 보여줄 수 있도록 크롭했다. 위 사진과 아래사진은 창 너비를 다르게 했다. 각 사진의 첫 줄 맨 끝을 보면 'vehicula'가 단어 중간에서 끊어지지 않고 아예 다음 줄로 개행되는 걸 볼 수 있다.
이제 zero.txt에 담긴 플래그를 찾아보자. 다음 링크에서 인코더/디코더를 찾을 수 있었다: https://330k.github.io/misc_tools/unicode_steganography.html
샘플로 있는 데이터는 아래와 같다. 저 Original Text안에 Where am I? 라는 메시지가 숨겨져있다.
정확히 숨길 수 있는 원리는 여기서 찾았다:
https://hackaday.com/2018/04/15/hide-secret-messages-in-plain-sight-with-zero-width-characters/
자 이제 진짜 flag를 찾아보자!
오른쪽 Steganography Text에 텍스트를 넣고 length를 확인한다. Decode 버튼을 누르면 히든 텍스트가 나오고 flag를 찾을 수 있다. Original Text length는 709다. 어쨌든 플래그를 찾았당
utflagutflag{whyNOT@sc11_4927aajbqk14}
'Wargame > CTF' 카테고리의 다른 글
RACTF 2020: Dimensionless Loading, Disk Forensics Fun (0) | 2020.06.13 |
---|---|
IOLI crackme 0x00 ~ 0x05 (0) | 2020.04.19 |
2020 AUCTF (2) | 2020.04.11 |
Codegate 2020 (1) | 2020.04.02 |
UTCTF 2020 Chatt with Bratt: Write-Up (0) | 2020.03.11 |