WEB SECURITY · FLAG TRAINING

요청을 관찰하고,
취약한 경계를 찾아냅니다.

개념만 읽고 끝내지 않습니다. HTTP 요청을 직접 바꾸고 취약 동작을 재현한 뒤 각 문제의 FLAG를 획득하세요.

문제 풀기 시작
01 · FOUNDATION

공격보다 먼저 이해해야 할 것

취약점 이름을 외우기보다 입력이 어디로 들어가고, 어떤 문맥에서 해석되며, 서버가 무엇을 신뢰했는지 확인합니다.

SQL Injection

입력값이 SQL 구조를 바꾸는 취약점입니다. UNION·오류·Blind 방식은 결과를 확인하는 통로가 서로 다르며, Prepared Statement와 최소 권한으로 방어합니다.

XSS

신뢰하지 않은 값이 HTML·속성·JavaScript 문맥에서 실행되는 취약점입니다. 출력 문맥별 인코딩, 안전한 DOM API, CSP를 함께 적용합니다.

파일 처리

파일명·확장자·MIME·내용·저장 위치를 각각 검증해야 합니다. 업로드 파일은 웹 루트 밖에 저장하고 새 이름으로 제공해야 합니다.

접근통제

버튼을 숨기는 것은 권한 검사가 아닙니다. 모든 읽기·수정·삭제 요청에서 서버가 사용자와 객체의 관계를 다시 확인해야 합니다.

SSRF

서버가 사용자가 지정한 URL을 대신 요청하면서 내부망이나 메타데이터에 접근하는 취약점입니다. 목적지 IP와 리다이렉트까지 매 요청마다 검증합니다.

CSRF

로그인된 브라우저가 원치 않는 상태 변경 요청을 보내게 하는 공격입니다. CSRF 토큰, SameSite 쿠키, Origin 검증과 재인증을 사용합니다.

02 · TOOLING

도구는 답을 대신하지 않습니다

브라우저에서 정상 요청을 먼저 만들고, Burp로 한 요소씩 바꾸며 응답 차이를 증거로 남기는 흐름을 익힙니다.

01

Burp Suite

Proxy로 요청을 관찰하고 Repeater에서 파라미터·헤더·본문을 반복 수정합니다.

02

브라우저 개발자 도구

DOM·저장소·네트워크·JavaScript 실행 문맥을 확인합니다.

03

HTTP와 인코딩

URL·HTML·JSON·multipart의 경계와 디코딩 순서를 구분합니다.

04

Python 자동화

Blind SQLi처럼 반복 판단이 필요한 경우 요청·응답 차이를 코드로 수집합니다.

03 · CHALLENGES

문제

교육용 격리 시뮬레이터

문제 입력은 고정된 판정 로직에서만 처리됩니다. 실제 데이터베이스 쿼리, 업로드 파일 실행, 내부망·외부 URL 요청은 수행하지 않습니다.