동아리에서 CTF 관심 있는 사람들은 팀 조인하라고 선배 한 명께서 톡방에 올리셔서 바로 이메일 등록했다.
동아리 들어와서 가장 해보고 싶었던 팀 꾸리고 CTF를 해볼 수 있게 되었다.
4월 6일부터 10일까지 꽤 오래 진행되었다.
그래서 그런지 문제도 계속해서 업데이트되서 엄청엄청 많았다.
난이도는 별로 어렵지 않다고 해서 안심했는데 역시나 초짜인 나에게는 어려웠다..
CTF가 시작하는 자정까지 대기타다가 정각에 새로고침을 했는데 아무 문제도 안 올라와있었다.
서버 오류인지 20분 정도 연기될거라고 디스코드에 공지가 올라왔다.
위에 디코 사진들은 채팅으로 드립 좀 쳤더니 누가 찐따 아니랄까봐 관심 받아서 신나서 캡쳐했다ㅎㅎ
아무튼 가징 쉬워 보이는 걸로 3문제 정도 풀었는데 복기를 좀 해보자
web/denied
web/agile-rut
osint/cherry-blossom
web/denied
what options do i have?
웹 링크와 js 파일이 주어졌다.
웹에 들어가보면 Bad! 라는 문구만 뜨고 아무것도 없다.
소스에서도, 쿠키에서도 아무런 정보가 없었다.
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
if (req.method == "GET") return res.send("Bad!");
res.cookie('flag', process.env.FLAG ?? "flag{fake_flag}")
res.send('Winner!')
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
주어진 js 파일을 열어봤다.
GET 메소드로 요청할 경우 Bad! 라는 문구가 나오지만, 다른 메소드로 요청하면 쿠키 정보로 플래그를 얻을 수 있는 것 같다.
GET이 안되면 POST로 요청을 보내면 될 거라 생각하고 POST 요청을 보내봤지만 Cannot POST라며 빠꾸를 먹었다..
OPTIONS 메소드를 요청해서 요청 가능한 메소드가 무엇인지 보니 GET과 HEAD라고 한다.
HEAD 요청을 할 경우 쿠키까지 확인할 수 있기 때문에 HEAD 요청을 보내면 될 거라 생각했다.
HEAD 요청을 보내 쿠키를 확인할 수 있었다.
flag 쿠키로 저장되어 있는 값을 URL 디코딩을 하면 플래그를 획득할 수 있다.
사실 처음에는 저 ...을 보고 플래그가 너무 길어서 온점 세 개로 생략되어 출력된 줄 알았으나 플래그 자체에 ...이 있는 거였다..
web/agile-rut
check out this cool font i made!
hint: if you get something that looks like the flag try pasting it into the box.
나를 새벽 4시까지 못 자게 만든 놈이다..
분명 플래그를 찾았는데 자꾸 틀린 플래그라고 한다
디스코드 보니까 많은 사람들이 나와 비슷한 문제를 겪고 있는 것 같았다.
결국 출제자 분께서도 여러번 힌트를 변경하고 문제도 수정해주셨다.
풀릴 것만 같아서 계속 붙잡다가 도무지 못 하겠어서 denied를 먼저 시도했는데 바로 풀려버려서 그제서야 자러 갔다..
달랑 웹페이지 하나만 주어진다.
폰트 자랑과 함께 폰트를 써볼 수 있는 input 박스가 있다.
개발자 도구에서 폰트 파일을 다운로드 받아볼 수 있다.
문제 설명에서도 유추해볼 수 있듯이 폰트 파일에서 정보를 얻어내야 하는 것 같다.
FontForge라는 프로그램으로 열었는데 유니코드 문자 맨 끝으로 가면 딱 봐도 수상해 보이는 글자가 있다.
눌러 보면 위에 글자 이름이 나오는데 그냥 초등학생이 봐도 저게 플래그다.
그래서 저걸 열심히 쳐봤는데 자꾸만 틀렸다고 나와서 새벽 4시까지 붙잡고 있던 거다..
결국 풀지 못 하고 다음 날이 되어서야 풀었다.
그 날 포렌식 스터디에 나가서 HxD를 깔았었는데 스터디하면서 심심해서 폰트 파일 집어넣어 봤는데 Glyphr Sudio라는 문자열이 보인다.
혹시나 해서 검색해보니까 온라인에서 폰트를 분석하는 사이트가 등장했다..ㄷㄷ
바로 폰트 파일 올리고 그 수상했던 문자 찾아보니 플래그를 확인할 수 있었다
솔직히 뭐가 다른지는 모르겠지만 어찌 맞추긴 했다.
위에 내가 뭘 야무지게 써놨는데 가장 아랫줄을 보면 플래그가 수상한 문자로 변환되어 있는 것을 확인할 수 있다.
저걸 복사해서 플래그에 입력하니까 정답이란다ㅋㅋ
솔직히 전에 입력한 거랑 뭔 차이인지 아직도 모름..
포렌식 스터디 안 나갔으면 못 풀 뻔..ㅋㅋ
osint/cherry-blossoms
average southern californian reacts to DC weather. amazing scenery though at the time.
Find the coords of this image!
Grader Command: nc (host) (port)
전형적인 좌표 찾기 Osint 문제로 벚꽃 사진이 주어졌다.
문제 설명 봐서는 워싱턴 DC인 것 같은데 사진 왼쪽처럼 성조기가 많은 곳을 찾아야 할 것 같다.
주어진 사진에 넓은 공터가 있었는데 워싱턴 DC 지도를 보니 넓은 공원이 있어서 그곳을 위주로 찾아봤다.
워싱턴 기념탑이 성조기로 둘러싸인 것을 보고 이 근처를 돌다가 찾았다.
로드뷰로 비교해가면서 일치하는 곳을 찾았다.
#!/usr/bin/env python3
# modified from HSCTF 10 grader
import json
with open("locations.json") as f:
locations = json.load(f)
wrong = False
for i, coords in enumerate(locations, start=1):
x2, y2 = coords
x, y = map(float, input(f"Please enter the lat and long of the location: ").replace(",","").split(" "))
# increase if people have issues
if abs(x2 - x) < 0.0010 and abs(y2 - y) < 0.0010:
print("Correct! You have successfully determined the position of the camera.")
else:
print("Wrong! Try again after paying attention to the picture.")
wrong = True
if not wrong:
with open("flag.txt") as f:
print("Great job, the flag is ",f.read().strip())
else:
print("Better luck next time ʕ·ᴥ·ʔ")
# 38.889020, -77.033697
주어진 코드를 보니 좌표는 오차 범위 0.001 이내로만 맞추면 될 것 같다.
난 저 solution: 뒤에 좌표 쓰면 되는 줄 알고 계속 썼는데 자꾸 플래그가 안 나왔다..
아무리 봐도 내가 찾은 위치가 정확한데 말이다
알고보니까 시스템에 접속하고 두 번째 줄에 출력되는 curl 명령어를 실행한 다음 주어지는 토큰을 Solution에 입력해야 좌표를 입력할 수 있게 되는 것이었다..
오차 범위가 생각보다 여유 있어서 그냥 워싱턴 기념탑 좌표를 입력해도 플래그를 얻을 수 있다.
난 이렇게 3문제만 풀고 끝냈다.
나중에 보니까 선배들이 많이 풀어주셨더라
bathroom-break도 누가 이미 풀어놨지만 나도 한번 풀어봤는데 구글에 이미지 검색을 하니까 누가 레딧에 질문글을 올려놨다..
거기서 사람들이 찾아놓은 위치를 구글 맵으로 찾고 리뷰를 보면 플래그를 얻을 수 있는 사이트 주소가 나왔다.
이걸 푼 선배님께서 어떻게 푸신 건지는 모르겠지만 난 이미지 검색으로 찾아서 플래그를 날로 먹을 수 있었다..ㅋㅋ
Osint 문제는 무슨 경찰 수사 같은 느낌이 들어서 굉장히 재미있다.
이번 CTF에는 아이템이란 것도 있었는데 잘못 눌러서 내가 티모 스킨을 사버려따ㅠㅠ
칩으로 사는게 아니라 포인트로 사는 건줄 알고 안 사질 줄 알고 구매 버튼을 눌렀더니 바로 사졌다.. 힝
'Security > CTF' 카테고리의 다른 글
SecurityFACT CTF w. Alkon 2024 Writeup (0) | 2024.11.16 |
---|---|
2024 5월 Space War Web WriteUp (0) | 2024.05.12 |
[LA CTF 2024 Write UP] 두번째로 참가해본 CTF (0) | 2024.02.19 |
[DiceCTF 2024 Quals Write Up] 1개월 공부하고 처음 참가해본 CTF (0) | 2024.02.07 |
댓글