-
4팀_박윤진 write-ups (ctf-d_플래그를 얻어라!)2021/Write-Ups 2022. 1. 25. 23:54
파일명: google.png
이미지 파일이 너무 깨끗하고(스테가노그래피X)
HxD로 열어도 파일 자체의 내용이 적어서 그 안에 뭘 숨겼을거라고 생각되지 않는다
그래서 라이트업을 봤더니 점이 찍혀있다고 한다
(처음에는 모니터에 뭐가 뭍은 줄 알았다)
1) 점의 위치
각 점의 위치가 단서가 될 수 있지 않을까 하여 이어볼 수 있다.
마땅한 단서는 나오지 않는다
또한 각 점의 위치를 (x, y) 좌표로 나타내보면 어떤 단서가 나올 수 있지 않을까?
→ 그래봤자 (100, 250) (320, 500) 이런식으로 나올텐데 이 숫자의 조합이 무의미할 것임을 추측할 수 있다
아니면 추가적인 단서가 주어졌다면 이 시도가 유의미했을 수도 있다
그런데 애초에 각 점을 추출하기 위해서 특징을 찾아내야하는데
이 과정에서 위치 정보가 아닌 색상값의 Blue 정보가 핵심임을 알 수 있다
(FLAG가 문자열 text라고 했으니 변환 가능성도 충분하다)아무튼, 찾아낸 특징 (r==255, g==0)을 통해 각 점의 위치값을 찾아낸다
from PIL import Image FLAG = [] target = Image.open("google.png") width, height = target.size for i in range(width): for j in range(height): r, g, b, a = target.getpixel((i, j)) if r == 255 and g == 0: data = (i, j) FLAG.append(data) print(FLAG)
[(100, 100), (150, 220), (200, 650), (250, 1300), (300, 300), (300, 700), (400, 900), (450, 400), (500, 600), (600, 1000)]
예상했다시피 규칙성이나(발견했어도 조합을 못했을듯) 특별한 의미가 보이지는 않는다
2) 각 픽셀의 색상(rgb)
1) 진행 과정에서 부가적으로 발견하게 된 특징 정보인 Blue를 잘 살펴보면
많이 봐서 외우게된 0x30(=49)(숫자)~0x7A(=122)(영어소문자) 까지의 범위 내에서
Blue 값이 변하는 것을 확인 가능하다
따라서 이 Blue값을 추출해내서 ASCII 코드로 변환하면 플래그가 나올 것임을 예상해낼 수 있다.
from PIL import Image FLAG = "" target = Image.open("google.png") width, height = target.size for i in range(width): for j in range(height): r, g, b, a = target.getpixel((i, j)) if r==255 and g == 0: FLAG += chr(b) print(FLAG)
출제자의 실수인지 python2015가 플래그이다.
이정도 실수는 출제 당시 년도를 통해 유추 가능하니 큰 실수는 아니다
'2021 > Write-Ups' 카테고리의 다른 글
3팀_이은경 write-ups (ctf-d_QR코드를 발견했지만) (0) 2022.01.25 3팀_이은경 write-ups (ctf-d_저는 이 파일이 내 친구와...) (0) 2022.01.25 4팀_박윤진 write-ups (ctf-d_플래그를 얻어라!) (0) 2022.01.25 1팀 남채림 Write-Ups (webhacking.kr_old_26, 39) (0) 2022.01.25 4팀_김세연 write-ups (ctf-d_내 친구 Mich는 이 멋진 튤립…) (0) 2022.01.25