본문 바로가기
취약점/웹 취약점

[Web 취약점] Injection 공격 방법(SQL Injection 2 : union based injection이 성공할 수 있었던 이유)

by 인성패밀리 2021. 10. 26.
반응형

본문의 내용을 가지고

어떠한 프로그램에 공격을 시행하여 발생하는 일은

전적으로 공격을 시행한 본인에게 있습니다.

반드시 실습은 본인이 구축하여 시행하시길 바랍니다.

========================================================

실습 환경 : VMware

실습 com1 : kali linux

실습용 취약한 server : bee-box

 

※ kali와 bee-box는 검색하여 쉽게 설치가 가능합니다.

========================================================


지난 시간 내용

 

[Web 취약점] Injection 공격 방법(SQL Injection 2 : union based injection)

본문의 내용을 가지고 어떠한 프로그램에 공격을 시행하여 발생하는 일은 전적으로 공격을 시행한 본인에게 있습니다. 반드시 실습은 본인이 구축하여 시행하시길 바랍니다. ========================

c-i-s.tistory.com

 

 

지난 시간 sql 공격 구문이 성공할 수 있었던 이유에 대해서 설명하겠습니다.

 

먼저 해당 페이지 소스코드를 보겠습니다.

php로 작성된 파일입니다.

 

$sql = "SELECT * FROM moives WHERE title LIKE '%" . sqli($title) . "%'";

순수 sql 구문만 떼서 보면 다음과 같습니다.

SELECT * FROM moives WHERE title LIKE '% . sqli($title) . %'

 

이때 ' 를 입력하면 변화되는 sql 구문을 보겠습니다.

SELECT * FROM moives WHERE title LIKE '%'%'

바로 저기 빨간색 부분이 구문 에러를 일으키는 것을 볼 수 있습니다.

 

다음은 union 구문을 삽입했을 때 입니다.

SELECT * FROM movies WHERE title LIKE '%' union select all 1,2,3,4,5,6,7#%'

앞의 기울임꼴의 select문장은 입력한 '에 의해 문장이 끊어졌습니다. 이 후 union을 사용하여 두 개의 select 문장을 합쳤습니다. 또한 #이후 파란색 볼드체 부분은 주석처리가 되었으므로 구문이 정상적으로 동작하게 하였습니다.

 

또한 bee-box의 보안 레벨을 medium과 high로 올려서 실습해본 결과 모두 실패하였습니다.

 

medium, high 실패 이유

공격 구문을 실행해본 결과 '(따옴표)가 필터링이 되었습니다. 우회하는 방법은 잘 모르겠습니다. 

반응형

댓글