⚠️ 훈련용 취약 웹사이트 — 실제 거래소가 아닙니다
취약점 목록 A03
A03

Injection

CVSS Score
9.8
critical

사용자 입력이 쿼리·명령어에 그대로 삽입돼 의도치 않은 동작을 유발합니다. SQL Injection, Stored XSS 등이 해당됩니다.

💥 공격 시 영향

  • SQL Injection: 비밀번호 없이 로그인, DB 전체 조회·삭제
  • Stored XSS: 세션 쿠키 탈취, 피싱 페이지 삽입
  • 관리자 계정 탈취 시 전체 서비스 장악

🎯 이 사이트에서 실습하기

SQL Injection 로그인 우회
username: admin'-- 입력
실습 페이지 →
Stored XSS
<script>alert(document.cookie)</script> 댓글 작성
실습 페이지 →

💻 취약 코드 vs 안전한 코드

❌ 취약한 코드
// ❌ 취약: 문자열 연결 SQL
const query = `SELECT * FROM users
  WHERE username = '${username}'
  AND password = '${password}'`;
// 입력: admin'--  → WHERE username='admin'--' AND...
// 주석 이후 조건 무시 → admin으로 로그인

// ❌ 취약: XSS - 미이스케이프 출력
<div><%- comment.content %></div>
// <script>alert(1)</script> 그대로 실행
✅ 안전한 코드
// ✅ 안전: Parameterized Query
const user = get(
  'SELECT * FROM users WHERE username=? AND password=?',
  [username, password]
);

// ✅ 안전: HTML 이스케이프 출력
<div><%= comment.content %></div>
// EJS에서 <%=  %> 는 자동 이스케이프 (<%- %> 는 raw HTML)

🛡️ 대응 방안

📚 참고 자료

OWASP A03:2021 CWE-89: SQL Injection CWE-79: XSS