SQL - 문제 미리보기

문제 1802

medium
다음 로그인 코드에서 SQL Injection 공격이 성공하는 입력은? ```sql -- 서버 코드: uName = getRequestString("username"); uPass = getRequestString("userpassword"); sql = 'SELECT * FROM Users WHERE Name ="' + uName + '" AND Pass ="' + uPass + '"' ``` Username과 Password 필드에 어떤 값을 입력하면 로그인 검증을 우회할 수 있는가?
A. Username: `admin`, Password: `password`
B. Username: `" OR ""="`, Password: `" OR ""="`
C. Username: `user123`, Password: `123456`
D. Username: `guest`, Password: `guest`

정답: B

⦁ 공격 입력 분석: ⦁ Username: `" OR ""="` ⦁ Password: `" OR ""="` ⦁ 실제 생성되는 SQL: ```sql SELECT * FROM Users WHERE Name ="" OR ""="" AND Pass ="" OR ""="" ``` ⦁ 논리 구조 분석: ⦁ `Name =""`: FALSE (빈 문자열과 비교) ⦁ `""=""`: TRUE (빈 문자열끼리 비교) ⦁ `OR TRUE`: 전체 조건이 TRUE ⦁ 결과: 모든 사용자 레코드 반환 ⦁ 공격 성공 이유: ⦁ 따옴표(`"`) 문자를 이용해 SQL 구조 변경 ⦁ 원래 조건을 무력화하고 항상 참인 조건 추가 ⦁ AND 연산자보다 OR 연산자가 우선하여 전체 조건 우회

💡 학습 팁

이 문제를 포함한 SQL 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.