Tag Archive

#client-side

이 태그가 포함된 글을 최신순으로 모아봤어요.

5
posts
BLOG2026-07-20
[🥉 Bronze 4] 버튼을 쫓아갈 필요가 없었다 — DreamHack Click me! 풀이
blog

[🥉 Bronze 4] 버튼을 쫓아갈 필요가 없었다 — DreamHack Click me! 풀이

마우스가 가까이 가면 도망가는 버튼. "Catch me if you can!"이라는 문제 설명 그대로, 겉보기엔 반응속도와 클릭 타이밍을 겨루는 미니게임 같다. 그런데 버튼의 클릭 이벤트가 하는 일이라곤 특정 URL로 이동하는 것뿐이고, 그 URL에 서버가 어떤 조건도 검증하지 않는다는 걸 소스에서 확인한 순간, 버튼을 쫓아다닐 이유 자체가 사라졌다.
#dreamhack#ctf#web+2
 
BLOG2026-07-12
[🥉 Bronze 1] 게임을 하지 않고 목표 점수를 제출한다 — DreamHack [wargame.kr] fly me to the moon 풀이
blog

[🥉 Bronze 1] 게임을 하지 않고 목표 점수를 제출한다 — DreamHack [wargame.kr] fly me to the moon 풀이

Tunnel 이라는 자바스크립트 게임의 점수가 브라우저에서 계산돼 서버로 그대로 POST 된다. anti-cheat 토큰은 세션당 발급될 뿐 점수가 진짜 플레이로 나왔는지 검증하지 않는다. 게임을 할 필요 없이 목표 점수 31337 을 직접 제출하면 플래그가 나온다. 클라이언트를 믿으면 안 된다는 걸 보여주는 문제.
#dreamhack#ctf#web+4
 
BLOG2026-06-24
[🌱 새싹] 화면에 흩날리는 글자를 슬라이스로 되맞추기 — DreamHack Flying Chars 풀이
blog

[🌱 새싹] 화면에 흩날리는 글자를 슬라이스로 되맞추기 — DreamHack Flying Chars 풀이

플래그 한 줄을 20조각 이미지로 잘라 10×10px 로 줄인 뒤 제각각 속도로 화면에 흘려보내는 문제다. 눈으로는 못 읽지만 조각은 그대로 서버에 있다. 파일명 숫자순으로 맞추면 깨진 문장이 나오고, HTML 의 img_files 배열(브라우저가 화면에 붙이는 순서) 그대로 이어 붙이면 플래그가 복원된다. 클라이언트에서 가리는 건 숨기는 게 아니라는 전형적인 예제.
#dreamhack#ctf#web+3
 
BLOG2026-06-22
[🌱 새싹] 호박을 만 번 깎으면 떨어지는 플래그 — DreamHack Carve Party 풀이
blog

[🌱 새싹] 호박을 만 번 깎으면 떨어지는 플래그 — DreamHack Carve Party 풀이

서버도 백엔드도 없는 HTML 한 장짜리 문제. 호박을 10000번 클릭하면 canvas에 플래그가 그려지는데, 그 플래그 바이트는 클릭 100번마다 한 번씩 XOR 변환을 거친다. 키로 쓰이는 pie 변수가 함수 밖 전역이라 배치 사이에 값이 이어진다는 점만 잡으면, 손으로 만 번 누르는 대신 100배치를 그대로 시뮬레이션해서 플래그를 꺼낼 수 있다.
#dreamhack#ctf#web+4