SQL Injection
입력값이 SQL 구조를 바꾸는 취약점입니다. UNION·오류·Blind 방식은 결과를 확인하는 통로가 서로 다르며, Prepared Statement와 최소 권한으로 방어합니다.
개념만 읽고 끝내지 않습니다. HTTP 요청을 직접 바꾸고 취약 동작을 재현한 뒤 각 문제의 FLAG를 획득하세요.
문제 풀기 시작취약점 이름을 외우기보다 입력이 어디로 들어가고, 어떤 문맥에서 해석되며, 서버가 무엇을 신뢰했는지 확인합니다.
입력값이 SQL 구조를 바꾸는 취약점입니다. UNION·오류·Blind 방식은 결과를 확인하는 통로가 서로 다르며, Prepared Statement와 최소 권한으로 방어합니다.
신뢰하지 않은 값이 HTML·속성·JavaScript 문맥에서 실행되는 취약점입니다. 출력 문맥별 인코딩, 안전한 DOM API, CSP를 함께 적용합니다.
파일명·확장자·MIME·내용·저장 위치를 각각 검증해야 합니다. 업로드 파일은 웹 루트 밖에 저장하고 새 이름으로 제공해야 합니다.
버튼을 숨기는 것은 권한 검사가 아닙니다. 모든 읽기·수정·삭제 요청에서 서버가 사용자와 객체의 관계를 다시 확인해야 합니다.
서버가 사용자가 지정한 URL을 대신 요청하면서 내부망이나 메타데이터에 접근하는 취약점입니다. 목적지 IP와 리다이렉트까지 매 요청마다 검증합니다.
로그인된 브라우저가 원치 않는 상태 변경 요청을 보내게 하는 공격입니다. CSRF 토큰, SameSite 쿠키, Origin 검증과 재인증을 사용합니다.
브라우저에서 정상 요청을 먼저 만들고, Burp로 한 요소씩 바꾸며 응답 차이를 증거로 남기는 흐름을 익힙니다.
Proxy로 요청을 관찰하고 Repeater에서 파라미터·헤더·본문을 반복 수정합니다.
DOM·저장소·네트워크·JavaScript 실행 문맥을 확인합니다.
URL·HTML·JSON·multipart의 경계와 디코딩 순서를 구분합니다.
Blind SQLi처럼 반복 판단이 필요한 경우 요청·응답 차이를 코드로 수집합니다.
문제 입력은 고정된 판정 로직에서만 처리됩니다. 실제 데이터베이스 쿼리, 업로드 파일 실행, 내부망·외부 URL 요청은 수행하지 않습니다.