이 현상에 대해 알려주실 고수 분을 찾습니다..
(원리를 알게 되면 추가해놓겠습니다)
los red_dragon 문제를 풀던 중 재미있는 사실을 발견했다.
xor 연산의 경우 같으면 0, 다르면 1을 반환하는 논리연산자이다.
id엔 null이 들어가서 false가 될 것이고 false를 숫자로 하면 0이므로
false ^ flase 연산이 되어서 false가 나와야 한다고 생각했는데
예상과 정반대로 true가 되어버렸다.
너무 신기해서 로컬에서 테스트해보았다.
test_1 테이블을 만들어서 조건을 바꿔가면서 넣어보았다.
우선 ''(null) 문자와 0을 and 연산하였다.
참이 되었다.
비트연산자 부분을 없애면 넣으면 정상적인 결과가 나온다.
이번엔 임의의 문자 'abc'와 0을 and 연산 해보았다.
결과는 이번에도 참이 나왔다.
경고 메시지를 살펴보니 비트 연산자의 피연산자로 문자열을 넣어서 그런 것 같다.
그래서 이번엔 숫자형 문자를 넣어봤는데
경고 메시지가 하나 줄었다.
where의 조건절에 숫자 타입의 컬럼을 넣고 숫자끼리 비교하니까
전부 false로 나온다.
도대체 왜 이러는지 아시는 고수님들 댓글 부탁드립니다!
'background > web' 카테고리의 다른 글
SSTI(Server Side Template Injection) (0) | 2022.09.29 |
---|---|
XXE Injection 이해를 위한 XML 기초 지식 (0) | 2022.08.29 |
XXE(XML External Entity) Injection (0) | 2022.08.27 |
Same Origin Policy(SOP) (0) | 2022.07.27 |
웹 브라우저 엔진과 웹 브라우저 엔진의 렌더링 과정 (0) | 2022.07.08 |