SQL Injection-2(Stage 1: string SQL Injection)

이원찬·2023년 11월 22일
0

Web Security

목록 보기
2/8

1. SQl 문자열 삽입

neville Bartholomew(admin)을 선택한 후 패스워드 부분에 'or''='를 입력한 후 Login을 클릭하면 정상적으로 로그인이 된다.

2. 소스코드 확인

WebGoat가 설치된 경로로 이동하여 LoginSqlInjection.java 파일을 실행한 후 패스워드 입력값을 처리하는 부분을 찾는다.

쿼리를 실행하는 소스코드는

SELECT * FROM employee WHERE userid = " + userid + " and password = '" + password + "' 

이렇게 되어있다.
아이디와 패스워드에 각각 Neville Bartholomew(admin), 'or''='을 입력하면 쿼리문은

SELECT * FROM employee WHERE userid = '
Neville Bartholomew(admin)' and password = ''or''=''

여기서 주의깊게 봐야하는 것은 password 이다.
작은따옴표 두개가 연이어 나오는 것은 Null을 뜻하고, SQL 구문에서 or는 앞의 구문과 뒤의 구문 중 하나만 참이면 결과로 참을 반환한다.

따라서 password = ''or''='' 는 password가 Null 값이거나 Null과 Null이 같은 경우이다. 앞의 패스워드가 비어 있는 것은 틀린 값이지만, or 뒤에 나오는 문장이 참이 되기 때문에 결괏값은 참이 된다.

profile
개발과 보안을 공부하고 있습니다.

0개의 댓글