금요일, 11 9 2020, 20:00 UTC — 일요일, 13 9 2020, 20:00 UTC
web.chal.csaw.io:5018/ 사이트에 들어가면 아래와 같은 페이지가 나온다.
뭔가 sign up에 적으면 다른 페이지가 넘어가는 것 같다.
F12를 눌러 페이지 소스를 보았다.
주석으로 zwsp is fun!이라고 적혀 있고, 밑에 알 수 없는 코드가 있다.
zwsp는 Zero Width Space 너비가 0인 공간을 말한다.
x='​​​​‎‏‎​​​​‌‍‏​​​​‎‍‏​​​​‎‍‍​​​​‏‏​​​​​‏‎‌​​​​‎​‍​​​​‍‏‍​​​​‎​‎​​​​‌‏‎​​​​‎‍‎​​​​‏‏‍​​​​‍‏‏​​​​‏​‍​​​​‎​‍​​​​‍​‌​​​​‏‍‌​​​​‍‍‌​​​​‌‍‏'
x.replace('​', '<200b>').replace('‌', '<200c>').replace('‍', '<200d>').replace('‎', '<200e>').replace('‏', '<200f>')
코드를 유니코드로 바꾸어 보았다.
'<200b><200b><200b><200b><200e><200f><200e><200b><200b><200b><200b><200c><200d><200f><200b><200b><200b><200b><200e><200d><200f><200b><200b><200b><200b><200e><200d><200d><200b><200b><200b><200b><200f><200f><200b><200b><200b><200b><200b><200f><200e><200c><200b><200b><200b><200b><200e><200b><200d><200b><200b><200b><200b><200d><200f><200d><200b><200b><200b><200b><200e><200b><200e><200b><200b><200b><200b><200c><200f><200e><200b><200b><200b><200b><200e><200d><200e><200b><200b><200b><200b><200f><200f><200d><200b><200b><200b><200b><200d><200f><200f><200b><200b><200b><200b><200f><200b><200d><200b><200b><200b><200b><200e><200b><200d><200b><200b><200b><200b><200d><200b><200c><200b><200b><200b><200b><200f><200d><200c><200b><200b><200b><200b><200d><200d><200c><200b><200b><200b><200b><200c><200d><200f>'
구글에 검색하니 이런 비슷한 문제들이 있었다. unicode_steganography 라이브러리를 사용한다고 한다.
자바 스크립트로 디코딩을 해보았다.
숨겨진 문자가 나왔다. base64 디코딩을 해보았다.
import base64
encoded = 'YWxtMHN0XzJfM3o='
data = base64.b64decode(encoded)
data
출력결과 b'alm0st_2_3z'가 나왔다.
플래그 형태는 아닌 것 같다.
나온 결과를 아까 sign up에 입력해보았다.
또다른 주소가 나온 것 같다. pwd는 입력한 값인 것 같다.
web.chal.csaw.io:5018/ahsdiufghawuflkaekdhjfaldshjfvbalerhjwfvblasdnjfbldf/alm0st_2_3z
페이지로 이동해보니 오른쪽으로 취우친 sign up 화면이 나왔다.
다른 pwd가 있나보다.
import requests
import zwsp_steg
data = requests.get ("http://web.chal.csaw.io:5018/ahsdiufghawuflkaekdhjfaldshjfvbalerhjwfvblasdnjfbldf/alm0st_2_3z").content.decode()
decoded=zwsp_steg.decode(data)
print(decoded)
구글에 검색해보니 간편한 HTTP 요청처리를 위해 사용하는 모듈인 requests를 사용하면 url를 갖고 와서 zwsp-steg 디코딩을 할 수 있다고 한다.
출력결과 755f756e6831645f6d33가 나왔다.
이번 결과는 base64형태가 아니다. 헥스값인 것 같다. ascii to hex 사이트에서 변환해보았다.
u_unh1d_m3가 나왔다. 이 문자를 sign up에 입력해보았다.
pwd1은 아까 구한 alm0st_2_3z이고, pwd2는u_unh1d_m3이다.
web.chal.csaw.io:5018//19s2uirdjsxbh1iwudgxnjxcbwaiquew3gdi/alm0st_2_3z/u_unh1d_m3
사이트로 가보니 플래그가 나왔다.
답 : flag{gu3ss_u_f0und_m3}
'#CTF 2020' 카테고리의 다른 글
CCE 2020 예선 #Forensic - [중]keyboord (0) | 2020.09.27 |
---|---|
CCE 2020 예선 #Forensic - [하]simple carv (0) | 2020.09.27 |
CCE 2020 예선 #Forensic - [중]Webpacket (0) | 2020.09.26 |
CSAW CTF 2020 #Crypto - Perfect Secrecy (0) | 2020.09.14 |
CSICTF2020 #Forensic - Panda (0) | 2020.07.23 |