tmxklab
2020 DownUnderCTF - [misc] homepage 본문
1. 문제 확인
이전 홈페이지 로고가 무지개색이 아니었냐고 하면서 어떻게 작동되는지 궁금해한다.
나도 궁금하다. 그리고 홈페이지 링크와 hint가 주어진다.
2. 문제 접근
먼저 힌트를 보면 8비트 단위로 끊어진 바이너리를 확인할 수 있다.
얼마 안되는 거 같아서 아스키코드표를 참고하면서 열심히 옮겨 적었다...
힌트 내용이 바이너리를 고려했냐고 한다.
이제 홈페이지의 로고가 어떻게 되어있는지 보자
마우스를 가져다 대면 색깔이 변경된다. 하다 보니 재밌어서ㅋㅋㅋ 다 바꿨다.
최종적으로 변경된 모습은
그런데 이거를 가지고 무엇을 할까 하다가
html파일을 확인해보니 각 점들의 좌표?는 cx, cy로 색깔은 rgb로 설정된다.
처음에는 바이너리와 관련되어 있는 문제인 것 같아서 rgb(0,82, 72)인 점을 0으로 rgb(195, 252, 241)인 점을 1로 매칭시키고 위에 힌트처럼 8비트 단위로 나누고 문자로 변경하는 식으로 접근했지만 플래그 값이 나오질 않았다.
그 다음 생각한 방법은 html을 보면 위에서부터 dot의 cx, cy가 뒤죽박죽인 것을 알 수 있다.
그래서 cx, cy를 오름차순으로 정렬해주고 rgb(0, ...)인 것은 0으로 rgb(195, ...)인 것은 1로 세팅하였다.
이것 역시 8bit로 끊어 보니 뭔가 문자로 변경가능할 것 같았다.
파싱 코드...
from bs4 import BeautifulSoup
import time
html = open("DownUnderCTF.html", encoding="UTF8")
bs = BeautifulSoup(html, 'html.parser')
tag1 = bs.find_all('circle')
p_list = []
c_list = []
new_list = []
# 1. parsing...
for tag in tag1:
p_list.append(tag)
for i in range(len(p_list)):
c_list = []
c_list.append(int(p_list[i]['cx']))
c_list.append(int(p_list[i]['cy']))
c_list.append(int(p_list[i]['style'][10:11]))
new_list.append(c_list)
# 2. sort
sort_list = sorted(new_list)
count = 1
output_list = []
# 3. 8 bit
for data in sort_list:
if data[2] == 0:
output_list.append("0")
else:
output_list.append("1")
if count == 8:
output_list.append("\n")
count = 0
count += 1
print(''.join(output_list))
'CTF 문제' 카테고리의 다른 글
2020 DamCTF - allokay(pwn) (0) | 2020.10.15 |
---|---|
2020 DamCTF - ghostbusters(pwn) (2) | 2020.10.15 |
2020 DownUnderCTF - [forensic] On the spectrum (0) | 2020.09.21 |
2020 DownUnderCTF - [pwn] return-to-whats-revenge (0) | 2020.09.21 |
2020 DownUnderCTF - [pwn] return-to-what (0) | 2020.09.21 |
Comments