' and '1'='2
DATE : 2023/11/28
이번에는 항상 false가 되는 조건의 and 연산을 Query에 넣어볼까 한다.
[ case 4 ]
'1'='2'는 서로 다른 피연산자를 비교함으로써 항상 false가 되도록 하는 조건이고
더불어, and 연산자는 한 쪽만 false여도 결과가 false이기 때문에
어떤 id가 입력되었든, 그 어떤 계정으로도 로그인을 하지 못할 것이라 예상할 수 있다.
[ Result 1 ]
위에서 살펴봤던 Query를 넣어 SQL injection을 실행하면
최종적으로 실행되는 Query에는 총 2개의 and 연산자가 들어있는 걸 알 수 있다.
Query의 조건이 어떻게 정리되는 지 확인해보면
우선, 앞에 있는 and 연산자가 실행되어
false가 나오게 된다.
이 결과를 넣어 where문을 다시 적어보면
(1)과 마찬가지로 false and 형태의 연산이 실행된다.
즉, where문의 내용이 결과적으로 false가 되기 때문에
그 어떤 계정으로도 로그인을 할 수 없게 되는 것이다.
실제로 ID & Password를 입력하면
Login Fail 문구가 나오는 걸 볼 수 있다.
[ Result 2 ]
이번에는 password 조건을 지우겠다!! 해서 주석을 사용해볼까 하는데
사실 and false가 주입 된 시점에서 뒷부분을 지운다 한들 결과가 크게 달라지진 않는다.
id에는 and '1'='2'가 주입 되기 때문에 결과는 false가 될 것이고
최종적으로 만들어지는 Query는
그 어떤 ROW도 반환하지 않기 때문에 [ Result 2]와 마찬가지로 로그인을할 수가 없다!
이번에도 직접 값을 넣어보면~
역시! 예상한 대로 Login fail 문구가 출력 되는 걸 확인할 수 있다!! 🤗
Last updated