DBMS Fingerprinting


쿼리 실행 결과 출력

SELECT @@version
SELECT version()

에러 메시지 출력

# MySQL
select 1 union select 1, 2;
# ERROR 1222 (21000): The used SELECT statements have a different number of columns

# SQLite
(select * from not_exists_table)
# Error: no such table: not_exists_table

참 거짓 출력

mid(@@version, 1, 1)='5';
substr(version(), 1, 1)='P';

예외 상황

애플리케이션에서 쿼리와 관련된 어떠한 결과도 출력하지 않는 경우 시간 지연 함수를 사용하는 방법

sleep(10)
pg_sleep(10)

System Table Fingerprinting

MSSQL

mastertempdb, model, 그리고 msdb

SELECT name FROM master..sysdatabases;
/*
name
-------
master
tempdb
model
msdb
dreamhack # 이용자 정의 데이터베이스 (예시)
*/
SELECT DB_NAME(1);

테이블 정보 조회

SELECT name FROM dreamhack..sysobjects WHERE xtype = 'U';
SELECT table_name FROM dreamhack.information_schema.tables;
/*
name
-------
users
*/