inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1

검색 기능 동작 원리 분석을 통한 올바른 분석 방법

검색 기능 sql인젝션 질문이 있습니다.

해결된 질문

701

아니

작성한 질문수 1

2

안녕하세요. 강의해주셔서 감사합니다.

가끔씩 연습을 하다보면 % 만 입력했을 시 전체데이터가 뱉어지는 경우가 있는데,

배운대로,

SELECT * FROM board WHERE title like '%검색어%' 라면

SELECT * FROM board WHERE title like '%%%'가 될 것 같습니다.

이게 어떤 원리로 전체 데이터가 출력이 되는 건지 궁금합니다. 입력한 %가 메타문자(와일드카드)로 인식되어 전체출력이 되는 걸까요?

그리고 싱글쿼터만 넣어도 전체 데이터가 출력되는 경우도 있던데 이것도 어떤 원리인지 너무 궁금합니다...! 알려주시면 감사하겠습니다.

 

모의해킹 인젝션

답변 1

1

크리핵티브

안녕하세요.

답변이 늦어서 죄송합니다.

%라는 와일카드 문자가 모든 문자에 매칭이 되기 때문에 컬럼 like '%' 이렇게 조건식이 있으면 무조건 참이 되게 됩니다.

그러면 검색창에 아무런 단어 입력 없이 그냥 검색만 클릭하여도, title like '%%' 이렇게 조건식이 만들어지니 당연히 전체가 출력되는 것이 맞죠. 그런데 환경에 따라서 검색어가 입력되지 않을 경우 검색어를 입력해라고 경고창이 출력되는 경우도 있기 때문에 검색어에 % 문자를 입력하여 입력 검증 로직을 통과하는 것 입니다.

그리고 싱글 쿼터만 입력해도 전체가 출력되는 경우는 이론대로라면 에러가 출력되는 것이 정상입니다.

DBMS 관점에서 title like '%'%' 이러한 문법은 문법상의 에러기 때문에 당연 에러가 출력되는 것 입니다. 그러나 간혹 전체 출력이 되는 경우가 있는데 이 경우는 두가지로 볼 수 있습니다.

1) 에러가 발생될 경우 전체 출력을 해버림. => 에러 무시

2) 싱글쿼터 문자 제거

이렇게 2가지로 볼 수 있으며, 그 외 싱글쿼터를 이스케이프 처리 시킬 경우 싱글쿼터도 검색어에 포함되어 싱글쿼터 문자가 포함된 검색 내용을 찾아서 출력이 됩니다.

MsSql php 연결 문의

0

35

1

APMSETUP 대신에 bitnami를 사용해도 되나요?

0

37

1

질문드립니다

0

110

3

PHP 기갑 게시판 설치에서 오라클 게시판 오류

0

104

2

업데이트 부탁드립니다.

0

196

1

강의 환경설정 MSSQL 문제

0

174

1

In-line Query 와 Terminating Query

0

174

2

Prepared Statement 대응방안 궁금사항 질문있습니다!

0

141

2

게시판에서 oracle만 오류가 나는 이유를 모르겠어요

0

173

2

질문

0

180

2

쿼리 결과 오류

1

349

2

오라클 php 연동이 도저히 안됩니다.

0

542

1

Json으로 데이터를 주고 받을 때 인젝션

1

618

1

case when 구문의 활용(2) 부분 질문 있습니다.

1

615

2

주석처리 관련 질문드립니다.

1

305

2

php & mssql 연동이 안됩니다.

2

534

2

xampp 최신버전 oracle 연동방법, 겪은 오류 정리

2

674

2

가상머신환경

1

308

2

현재 SQL 인젝션 강의를 듣고 있어요

0

230

1

? 플레이스 홀더 문자

0

355

1

mysql case when 구문이용

1

396

1

실습환경 오류 발생시 봐주세요!

0

333

1

php 버전 호환 문제

1

292

1

SQL이나 XSS 실습 서버

1

374

2