연결 연산자를 지워버리는 경우에 대한 질문이 있습니다.
te'||(case when 1=1 then 'e' else 'a' end)||'st 라는 파라미터로 테스트를 해본다고 하셧는데, 이건 ORACLE 에서만 가능한건가요?
연결연산자만 다른 같은 구문을 MYSQL에서
select 'te' (case when 1=1 then 'e' else 'a' end) 'st'
이런식으로 쿼리를 보내봤더니 에러가 뜨더라구요. 왜 오라클에서는 되고 mysql에서는 안되는지 궁급합니다.
답변 1
3
안녕하세요.
MySQL의 경우는 연결 연산자가 따로 존재하지 않습니다.
연결 연산자 설명 시 공백을 예시로 했지만 사실 공백은 연결 연산자가 아닙니다.
구문을 구분하는 구분자 같은 역할을 하는 문자죠.
그런데 만약 select 'te' 'st' 이렇게 문장이 사용될 경우,
즉, 문자열과 문자열 사이에 공백이 존재할 경우 mysql은 이를 붙여주는 역할을 할 뿐 연산자는 아니란 것입니다.
그래서
select 'te' (case when 1=1 then 'e' else 'a' end) 'st'
위의 쿼리의 경우는
단순 [문자] [공백] [문자] 가 아니고 (case when~~) 구문이 들어갔기 때문에 공백의 본래 기능을 하게 됩니다.
정리하면,
mysql은 단순히 문자열 사이에 공백, 탭, 개행 등 의미없는 문자가 사용될 경우 연결 연산자 같은 기능은 하지만
다른게 올 경우 그런 기능을 하지 않는다 입니다.
때문에 mysql의 경우는 concat 함수 밖에 사용을 하지 못합니다.
컬럼명 기반으로 테이블 개수를 출력
2
501
1
외부 자료 학습중 질문사항-메타데이터 추출 불가한 상황
1
478
1
텍스트 인코딩 한국어
1
611
1
강의랑 관련없는 내용이지만
1
527
2
왜 취약점이 존재한다고 판단할 수 있는지 궁금합니다.
2
555
1
스프링을 배우는 게 나중에 웹 취약점 진단에 도움이 될까요?
2
619
1
Fatal error
1
698
1
코드에 있는 이상한 노란박스
1
1797
1
Parse error 마지막 부분 에러
1
450
1
microsoft machine leraning server 구성 요소 오프라인 설치
1
698
1
실무에서의 버프스위트 사용이 궁금합니다!
1
371
1
sql injection이 왜 위협적인 공격인지 궁금합니다.
2
458
1
union 공격 시 최적화 방법 (게시글 상세보기)
2
260
1
질문이 있습니다
1
202
1
한글은 비트추론할때 어떻게 해야하나요?
1
233
1
[SQL 인젝션에 대한 이해] - "검색 기능에 대한 올바른 취약점 점검 방법" 강의 내용에 대해서 질문입니다.
1
742
2
로그인 버튼
1
286
1
php+mssql 연동
1
448
1
취약점 실습 에러가 안나요
1
240
1
php 기반 로그인 기능 제작 관련해서 질문드립니다.
1
368
3
[실습 7-4, 7-5, 7-6] MySQL, MSSQL, Oracle union based 공격 실습 강의 이후 상세보기에서 순차적 데이터 호출 실습 질문
1
316
1
[실습2-1] 취약점 분석 실습 도중에 질문있습니다 !!
2
225
1
[실습6-1]MSSQL ERROR-BASED 공격 실습 관련 질문 내용
2
374
1
ORA-12541
1
897
7





