Wargame/CTF

UTCTF 2020 Zero: Write Up

마띠(쥔장) 2020. 3. 10. 23:17

제공받은 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, 즉 폭없는 공백으로 단어의 단락을 나타낼 때 사용된다고 한다. 보통 한국어나 영어는 띄어쓰기를 하는 곳이 개행의 위치로 적절하다. 하지만 '/'뒤처럼 개행 포인트로 적절하지만 공백은 넣지 않은 곳, 일본어처럼 띄어쓰기를 하지 않을 때 개행할 위치를 명시하기 위해 '폭없는 공백'이 사용된다고 한다. 위키백과에서 간단한 예시를 찾았다.

https://en.wikipedia.org/wiki/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}

728x90