W-01
SQL Injection (인증 우회)
위험도: 상⚠️ 위험도 근거: 인증 우회로 관리자 권한 탈취 가능, DB 전체 조회·삭제 가능
자주 하는 실수 — 나쁜 예시 vs 좋은 예시
실수 유형: 개요 부실
❌ 나쁜 예시
SQL Injection은 위험한 취약점입니다.
✅ 좋은 예시
SQL Injection이란 사용자 입력값이 적절한 검증 없이 SQL 쿼리에 삽입되어, 공격자가 의도하지 않은 SQL 구문을 실행할 수 있는 취약점이다.
실수 유형: 발견 내용 불명확
❌ 나쁜 예시
로그인 페이지에서 SQL Injection이 발생했습니다. admin'-- 을 입력했더니 로그인이 됐습니다.
✅ 좋은 예시
점검 URL: http://target/login.php 파라미터: username (POST) 페이로드: admin'-- POST 요청: username=admin'--&password=test 결과: admin 계정으로 인증 우회 성공 (관리자 대시보드 접근 확인)
실수 유형: 조치방안 추상적
❌ 나쁜 예시
입력값을 검증해야 합니다.
✅ 좋은 예시
Prepared Statement 적용:
취약: $sql = "SELECT * FROM users WHERE username = '$username'";
조치: $stmt = $db->prepare("SELECT * FROM users WHERE username = ?");
$stmt->execute([$username]);